Iphone 目标c:这些代码片段是什么意思?

Iphone 目标c:这些代码片段是什么意思?,iphone,objective-c,ios,Iphone,Objective C,Ios,我是iphone开发新手,刚刚进入学习阶段。当我看到这个我无法理解的代码时,我正在从书本和视频讲座中学习 - (IBAction)logoff:(id)sender { //some code here } 在这里,我不理解id是一种数据类型还是某个实体。而将id作为参数传递的原因又是什么呢 在另一个地方我看到 if(self) { // some code } 我不明白他为什么要自首。检查自我的理由是什么。我们应该在使用它之前检查一下自己吗 请告诉我他为什么使用这个的原因,以便我能在我

我是iphone开发新手,刚刚进入学习阶段。当我看到这个我无法理解的代码时,我正在从书本和视频讲座中学习

- (IBAction)logoff:(id)sender {
//some code here 

}
在这里,我不理解id是一种数据类型还是某个实体。而将id作为参数传递的原因又是什么呢

在另一个地方我看到

if(self)
{
// some code
}
我不明白他为什么要自首。检查自我的理由是什么。我们应该在使用它之前检查一下自己吗

请告诉我他为什么使用这个的原因,以便我能在我的代码中高效合理地使用它,这对我会更有帮助


谢谢

他没有,他评估
self
以检查它是否为
nil


意思是如果
self
不是
nil
do
//某些代码

这意味着注销包含id作为函数的参数。。现在在if条件下,它检查控件是否仍然存在。。。由于您的逻辑,您可能只是释放了控件,或者只是自己释放了控件。。。所以我们需要这个来检查控制是否仍然存在

- (IBAction)logoff:(id)sender {
//some code here 

}
上面的代码是一个按钮点击。一个按钮(注销)是通过IB放置的。当您点击该按钮时,该方法将与该按钮关联,并将被调用
(id)sender
是一个参数,表示按钮的标记属性。如果您有多个按钮,并且希望处理这些按钮的单击事件,则此参数非常有用

if(self)
{
// some code
}
上面的代码检查内存分配是否正确完成

- (IBAction)logoff:(id)sender {
    //some code here 
}
许多控件(UIButton、UISwitch、UIBarButtonim)可以连接到同一个操作方法。由于发送者的类型为
id
,因此它将接受许多不同的发送者类型,即发送者类型不限于UIButton

Maulik关于参数表示标记的评论是错误的,它表示发送消息的对象(例如UIControl)。但是,为了检索标记,可以对对象进行类型转换,前提是发送方转换到的类型包含标记属性,并且发送方的类型正确


现在,关于您的另一个问题:
self
在继续之前被检查为非零。有时,初始化可能由于多种原因(例如内存问题)而失败。如果对象未能正确初始化,您对此无能为力(例如,无法访问ivars,因为没有为ivars分配内存)。

很明显,他正在检查self是否为零,但原因可能是什么?可能是初始化/分配失败,或者可能是出于某种原因发布的……如果类型为UIButton的发送者,则可以使用UIButton button=(UIButton)发送者;要得到实际的按钮对象……考虑ID就像一个通用的引用,比如C中的空洞*…@ KrasnnabHaDRA不要忘记UIButton是一个类,所以需要是一个指针;您将需要星号:UIButton*按钮=(UIButton*)发送器;(或者,标记是否有趣?如果粗体文本中需要星号,可以使用双下划线来标记,而不是星号)哎呀…你说得对…尝试格式化时忘记星号..谢谢你注意到。。。