1、方法调用基本语法
[object method];
[object methodWithInput:input];
方法可以有返回值:
output = [object methodWithOutput];
output = [object methodWithInputAndOutput:input];
还可以调用累方法:
id myStr = [NSString string];
id类型意味着myStr可以是任意类型的对象。
或者:NSString* myStr = [NSString string];
注意:在对象类型的右边有一个星号(*),在Objective-C中所有的对象变量都是指针类型,id类型已经被预定义为指针类型,所以不需要加一个星号。
2、方法嵌套调用
在许多编程语言中,嵌套的方法或函数是这样调用的:
function1(function2()); //function2()的返回值作为参数传递给function1()。
在Objective-C中,嵌套的方法或函数调用:
[NSString stingWithFormat:[prefs format]];
要尽量避免在一行语句中进行两层以上的嵌套,这样会使代码的可读性降低。
3、多个输入参数的方法定义
在Objective-C中,一个方法的名字可以被拆分成几段:
- (BOOL) writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
你可以这样调用这个方法:
BOOL result = [myDate writeToFile:@"/tmp/log.txt" atomically:NO];
这些不是命名参数。在运行中,该方法的名字实际上是:writeToFile:atomically:
4、点操作符
在Mac OS X 10.5中,Objective-C 2.0新增了点操作符的设置器(setter)和获取器(getter):
user.name = @"Mike"; //[user setName:@"Mike"];
output = user.name; //output = [user name];
区别:点语法只能使用在设置器(setter)和获取器(getter)上,而不能用于普通方法!
5、在Nil上调用方法
在Objective-C中,nil对象的作用等同于其他语言的NULL指针。
不同的地方在于,在nil上调用方法不会导致程序崩溃或抛出异常。
6、类的创建
在Objective-C语法中,一个类通常分为两部分:类的接口(头文件)和类的实现。
类的接口(interface)通常存放在类似ClassName.h的文件中,在这里我们定义实例变量和公用方法(public)。
类的实现存放在ClassName.m这样的文件中,它实现了接口中定义的方法。通常还可以定义外面不能访问的私有方法(private)。
User.h
--------------------
#import <Cocoa/Cocoa.h>
@interface User : NSObject
{
NSString* username;
NSString* password;
}
- (NSString*) username;
- (NSString*) password;
- (void) setUsername:(NSString*) input;
- (void) setPassword:(NSString*) input;
@end
User.m
--------------------
#import "User.h"
@implemention User
- (NSString*) username
{
return username;
}
- (NSString*) password
{
return password;
}
- (void) setUsername:(NSString*) input
{
[username autorelease];
username = [input retain];
}
- (void) setPassword:(NSString*) input
{
[password autorelease];
password = [input retain];
}
@end
在Objective-C中,get这个词有着特殊含义,获取器(getter)是不带get前缀的。方法前面的减号(-)表示这是一个实例方法,如果方法名前面是个加号(+),表示这是一个类方法。
释放一个对象有两种方法:release和autorelease。标准的release会立即释放对象的引用,autorelease直到当前方法结束才会释放(除非你添加自定义的代码来明确的改变它)。
7、类目(Category)
类目是Objective-C中最有用的一个特性。类目允许你为一个已存在的类添加一些方法,而不用子类化该类,也不需要你了解该类的实现细节。
例如:我想给NSString添加一个方法,判断它是不是一个URL,写法如下:
NSString-NSStringHelper.h
-------------------------------
#import <Cocoa/Cocoa.h>
@interface NSString (NSStringHelper)
- (BOOL) isURL;
@end
这很像一个类的声明,不同的地方在于后面没有列出父类,并且在括号里写了类目的名字。
类目的名字可以随便取,但最好能表达出你在类目中包含的方法所要做的事。
#import "NSString-NSStringHelper.h"
@implemention NSString (NSStringHelper)
- (BOOL) isURL
{
if ([self hasPrefix:@"http://"])
return YES;
else
return NO;
}
@end
现在你可以使用NSString的这个方法了:
NSString* str1 = @"http://www.iteye.com";
NSString* str2 = @"HelloWorld";
if ([str1 isURL])
NSLog(@"str1 is a URL.");
if ([str2 is URL])
NSLog(@"str2 is a URL");
内容更新中。。。。。
分享到:
相关推荐
懒人笔记iOS客户端是一款专为懒人打造的高效记事应用,它采用了创新的语音输入功能,让用户无需手动打字,只需说话就能轻松记录生活、工作中的点滴。这个压缩包"懒人笔记iOS客户端.zip"包含的是Voice2Note项目的源...
通过阅读和分析源代码,开发者可以深入理解Objective-C的编程实践,学习如何构建一款简洁高效的iOS应用,包括UI设计、数据管理、用户交互等方面的知识。 总的来说,MyNote以其简约的界面和实用的功能,为用户提供了...
这款应用是用Objective-C语言编写,针对iOS平台,标签中的"objective-c"和"ios"正是表明了它的技术栈。 Objective-C是苹果公司开发的一种面向对象的编程语言,它是C语言的超集,增加了Smalltalk风格的消息传递机制...
Objective-C是一种面向对象的编程语言,它是C语言的超集,增加了Smalltalk风格的消息传递机制和类定义等面向对象特性。在开发"一天・One Day"这样的应用程序时,开发者可能利用了Objective-C的强类型、动态绑定以及...
对于iOS,可能使用Swift或Objective-C。由于标签只提到了"QQ",我们无法确定具体平台,但可以推测可能至少包含一种移动开发技术。 2. **网络通信**:发布说说需要与QQ服务器进行数据交换,这涉及到HTTP/HTTPS协议,...
记录点滴成长 文件目录 Cocoa:gem_stone: UIKit框架 内存管理 动画 多线程 数据存储 Web相关 底层重点知识 大前端:red_heart: 解析-Flutter 解析-Weex 性能优化 代码规范 解析-架构搭建 解析-设计模式 解析-组件化...
- 移动开发:原生Android(Java或Kotlin)、iOS(Swift或Objective-C),或跨平台框架React Native、Flutter 综上所述,"NoteTaker"涉及到的知识点广泛,涵盖了前端和后端开发、数据库管理、用户体验设计、网络通信...
在Swift编程语言的世界里,"dodam_swift"似乎是一个个人项目或者代码库的名称,代表了开发者记录其在Swift学习过程中的点滴进步。这个项目被称为“一个孩子成长的日记”,暗示着它可能是一个逐步发展的过程,展示了...