Objective c 对象中方法的Objective C语法

Objective c 对象中方法的Objective C语法,objective-c,xcode,object,methods,Objective C,Xcode,Object,Methods,我在遵循一本关于对象的教科书中的一些例子,但不知何故,我完全错过了某种语法样式或规则,我不确定我在这里看到的是什么 这两种方法是我一直坚持的。我不确定我应该如何从字面上理解它们 这是一个字符串函数,它接受指向我们称为lastTimeString的字符串对象的指针吗 -(NSString *)lastTimeString; 及 我不知道冒号是干什么用的。这是一个接受指向NSTimer对象的指针的方法吗 -(void)updateLastTime: (NSTimer *)t; 请帮忙。

我在遵循一本关于对象的教科书中的一些例子,但不知何故,我完全错过了某种语法样式或规则,我不确定我在这里看到的是什么

这两种方法是我一直坚持的。我不确定我应该如何从字面上理解它们

这是一个字符串函数,它接受指向我们称为lastTimeString的字符串对象的指针吗

-(NSString *)lastTimeString;  

我不知道冒号是干什么用的。这是一个接受指向NSTimer对象的指针的方法吗

   -(void)updateLastTime: (NSTimer *)t;
请帮忙。目前格式或样式对我来说有点不协调

#import <Foundation/Foundation.h>
@interface BNRLogger : NSObject

@property (nonatomic) NSDate *lastTime;
-(NSString *)lastTimeString;
-(void)updateLastTime: (NSTimer *)t;

@end
#导入
@接口BNRLogger:NSObject
@属性(非原子)NSDate*lastTime;
-(NSString*)lastTimeString;
-(void)updateLastTime:(NSTimer*)t;
@结束
这是一个函数声明,它将返回一个
NSString
类型变量

示例:
NSString*myString=[self lastTimeString]

-(void)updateLastTime: (NSTimer *)t;
这也是一个函数声明,允许您将
NSTimer
类型变量传递到

示例:
[self-updateLastTime:myTimerObj]

以下是基本内容:

不带参数的方法

<method type> (<return type>) <method name>: (<argument type>) <argument name>;

+(void) doLoginWithUserId: (NSString *) userId;

- (void) doLoginWithUserId: (NSString *) userId;
()

具有单个参数的方法

<method type> (<return type>) <method name>: (<argument type>) <argument name>;

+(void) doLoginWithUserId: (NSString *) userId;

- (void) doLoginWithUserId: (NSString *) userId;
具有单个NSString返回值的方法

()

-(NSString*)lastTimeString
这是一个返回类型为NSString的函数声明。 它将返回一个时间字符串

-(void)updateLastTime:(NSTimer*)t

这是一个更新时间的函数 它不会返回任何内容,因此其返回类型为void 要调用此函数,必须将计时器作为参数传递
[自我更新时间:计时器]

括号中
+
-
后面的部分是函数的返回类型。i、 e

- (NSString *)iReturnAString;
+ (int)andIReturnAnInt
冒号表示一个输入参数。整个函数语法如下所示

-/+(<return type>)functionNameStarts:(<parameter 1 type>)<parameter 1 name> functionNameContinues:(<parameter 2 type)<parameter 2 name> functionNameEnds:(<parameter 3 type>)<parameter 3 name>;
函数的名称为

scrollToRowAtIndexPath: atScrollPosition: animated:
它需要3个参数,它们是:

NSIndexPath* indexPath, UITableViewScrollPosition scrollPosition, BOOL animated

希望这有帮助

我将尝试比较C函数和Objective-C函数语法,希望这能帮助您理解

以下内容不接受任何内容,也不返回任何内容:

void function(); //C
-(void) function; //Objective-C
以下内容不返回任何内容并接受一个整数值

void function(int value); //C
-(void) function:(int)value; //Objective-C
以下内容不返回任何内容,并接受两个参数,每个参数一个整数值和一个浮点值。请注意,在objective-c中,方法名称发生了更改。实际上,对于每个额外的参数,我们都会在方法名中添加一些有意义的词

void function(int iValue, float fValue); //C
-(void) function:(int)iValue
     otherValue:(float)fValue; //Objective-C
如果希望返回任何值,只需使用
return
类型值代替
void

此外,在Objective-C中,我们有两种方法,一种是从称为实例方法的
-
开始的,另一种是从称为类方法的
+
开始的

只能从类的对象调用实例方法,而调用类方法时不创建类的实例

例如:

亮点:

一个类主要有两个文件,第一个头文件(classname.h)和第二个实现文件(classname.m)。你的代码我考虑了哪些是头文件。我将用参考链接解释每一行。如果你对此仍有疑问,请告诉我


接口部分,在这里您可以编写类或类别的名称,在本例中,我们创建了一个名为BNRLogger的自定义类,它派生自NSObject。请


属性部分,这里我们编写公共属性,通过创建类的对象,可以在类的外部访问这些属性。根据需要,属性可以是原子/非原子和强/弱/保留/分配/复制/只读/读写。在本例中,我们添加了变量名为lastTime的NSDate(因为它应该是写为*lastTime的指针)。你可以阅读并了解一些关于这方面的信息


方法定义部分,这里我们可以添加方法定义,我们将在
.m

在第一个示例中,第一个方法将返回一个
NSString
,string也是指针类型,我们编写的代码类似于
-(NSString*)lastTimeString在Objective-C中,每行应以
结尾(分号)。可以使用NSString*t=[self lastTimeString]在同一个类中调用此函数;或者使用类的对象名从不同的类中删除

在第二个示例中,方法的返回类型为void,方法名称为updateLasTime,它以
NSTimer
作为参数,其中
t
NSTimer
变量,通过该变量,可以在该函数中设置计时器

参考


结束部分,这应该是任何类的最后一行,只有协议可以写在这一行之外。它告诉编译器不需要进一步编译

这是一个
NSIndexPath* indexPath, UITableViewScrollPosition scrollPosition, BOOL animated
void function(); //C
-(void) function; //Objective-C
void function(int value); //C
-(void) function:(int)value; //Objective-C
void function(int iValue, float fValue); //C
-(void) function:(int)iValue
     otherValue:(float)fValue; //Objective-C
Yourclass *object = ... ;
NSString *somevalue1 = [object method]; //this is an instance method since called by object
NSString *somevalue2 = [YourClass cMethod]; //cMethod called without instance, directly with className
#import <Foundation/Foundation.h> 
@interface BNRLogger : NSObject    
@property (nonatomic) NSDate *lastTime;
-(NSString *)lastTimeString;
-(void)updateLastTime: (NSTimer *)t;    
@end