在视图屏幕上,在ViewController对象之外写入UI对象的“适当方法”是什么?通过一个完全不同的对象?
在考虑了一下之后......我在“viewDidLoad”中设置了一个指向“self”的指针,然后传递了它。它只是一个记忆位置,从那以后它在很多场合显然对我很有用。有人指出要小心并且对64位机器使用64位整数或长整数。这是个好建议。但大多数人不喜欢使用指针的想法。那么什么是更好的方式?
(我发布了我的解决方案,但它被删除了......即使它是一个有效的解决方案,它被多次投票了)
答案 0 :(得分:4)
self
是一个隐藏参数,传递给Objective-C中的每个实例方法。它是对调用该方法的对象的引用。在您的情况下,似乎self是UIViewController的实例或所述类的更具体的实现。
答案 1 :(得分:3)
首先,它是self
,而不是Self
,它是当前对象,即UIImageView
/ ViewController
的当前实例,您可以将其视为任何其他对象
答案 2 :(得分:3)
如果您的问题是“自我”的类型是什么,那么答案是“它是您从中调用它的对象的类型”。例如,如果您正在谈论UIViewController
名为calcRomanViewController
的子类,则self
的类型为calcRomanViewController*
。
听起来你要做的就是将引用self
传递给其他对象。一种方法是简单地让你在另一个类上调用的方法采用适当类型的参数(例如,UIViewController
)。
如果另一个类不恰当/必须确切地知道要传入的对象类型,则可以使用Objective-C通用对象类型id
。例如:
- (void) echo:(NSString *) message withDelegate:(id) delegate {...}
通过声明一个协议,你可以更进一步,实际上说“我不关心你传递给我的是什么类型的对象,只要它实现了以下方法”。例如:
@protocol echoDelegate
- (void) echoCompleted;
@end
- (void) echo:(NSString *) message withDelegate:(id<echoDelegate>) delegate {...}
答案 3 :(得分:0)
这取决于你正在做什么课。无论你运行的是什么对象的方法,都是自我的实例和类型。与C ++概念相同。
答案 4 :(得分:0)
您提出的问题需要太长的答案才能适应Stackoverflow。它们是Objective-C作为编程语言的基础,而Cocoa Touch是应用程序框架。已经有很好的指南可以帮助你入门,所以我指的是你。
你的第一个问题告诉我你还没有理解Objective-C。我建议你先阅读Apple提供的 Learning Objective-C:a Primer :http://developer.apple.com/library/ios/#referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/
你的第二个问题告诉我你还没有理解View Controllers的概念。我建议你首先阅读适用于iOS的View Controllers Programming Guide ,也可以通过Apple阅读:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS