|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
iPhoneSDK安装,然后最基本的是你要熟悉C语言,再来你得学习开发iPhone所使用的Objective-C语言,接著是Cocoa。如果你是Mac平台开发的入门用户前奏
Objective-C很有本性,一个较为光显的特性就是办法函数是分段式的,即函数名不写在一同,而是将其拆成N段,分离对应N个参数,年夜年夜增添了代码的可读性。
- #defineWQ_FUNC_LOGNSLog(@"%s",__FUNCTION__)
- -(void)firstSegment:(id)firstObjsecSegment:(id)secObjthirdSegment:(id)thirdObj
- {
- WQ_FUNC_LOG;
- }
为了便利申明,我在该办法中打印一下本人的办法称号。发送该旌旗灯号(普通地说是挪用该办法)以后
- -(void)viewDidLoad
- {
- [superviewDidLoad];
- [selffirstSegment:@"1"secSegment:@"2"thirdSegment:@"3"];
- }
我们会失掉以下的log输入,能够明晰的看到selector的名字为firstSegment:secSegment:thirdSegment:
- 2013-07-0516:34:13.977Test[1828:c07]-[WQTestViewControllerfirstSegment:secSegment:thirdSegment:]
主题
OK,前奏已完,进进主题,倘使我在函数原型中删撤除第二个参数secObj,会产生甚么呢?
- -(void)firstSegment:(id)firstObjsecSegment:(id)thirdSegment:(id)thirdObj
- {
- WQ_FUNC_LOG;
- }
假如利用Xcode主动补齐办法,会发明是如许挪用
- -(void)viewDidLoad
- {
- [superviewDidLoad];
- [selffirstSegment:@"1"secSegment:@"2":@"3"];
- }
运转一下会失掉以下log:
- 2013-07-0517:26:10.725Test[1976:c07]-[WQTestViewControllerfirstSegment:secSegment::]
结论是,办法被声明成了firstSegment:secSegment::这个名字,那末参数呢?固然也不难推测和考证。
- -(void)firstSegment:(id)firstObjsecSegment:(id)thirdSegment:(id)thirdObj
- {
- WQ_FUNC_LOG;
- NSLog(@"args[]={%@,%@,%@};",firstObj,thirdSegment,thirdObj);
- }
当thirdSegment和thirdObj都被视为参数,我们就不能不有如许一个勇敢的料想,岂非selector能够撑持空段?岂非selector能够没着名字?
实验造一个没着名字的办法,正确的说法是,一个空的selector
- -(void):(id)obj
- {
- }
- -(void)viewDidLoad
- {
- [superviewDidLoad];
- SELsel=@selector(:);
- if([selfrespondsToSelector:sel]){
- NSLog(@"urright");
- }
- }
编译运转,Log输入告知我们,我们的料想是准确的,Objective-C撑持空段selector。
结论
Objective-C撑持空段selector,这明显不具有优秀的代码可读性,平常我们也不会这么写这么用,那为何还要出格提出来讲这件事呢?只是想给人人提个醒,偶然候我们的一个大意大概一个不当心,就有大概变成一个必要debug很久的低水准bug,特别是,delegate办法定名又臭又长的时分……
不管是学习Objective-C语言,还是学习ios,我都只是跟着书上的例子,在苹果机上,在Xcode和InterfaceBuilder开发环境中,按部就班的“抄”些应用程序。 |
|