草庐IT

self-referencing

全部标签

iphone - 从类方法中将委托(delegate)设置为 "self"

比如,我想从辅助类方法调用UIActionSheet。我希望帮助程序类(不是对象)成为此操作表的委托(delegate)。所以我将自己传递给委托(delegate)。UIActionSheet*actionSheet=[[UIActionSheetalloc]initWithTitle:@"MyTitle"delegate:selfcancelButtonTitle:nildestructiveButtonTitle:@"Delete"otherButtonTitles:nil];我的助手类将委托(delegate)方法实现为类方法,一切正常。但是,我从编译器那里收到一条警告,指出不兼

objective-c - 为什么 ((self=[super init]]) 有效,但 (!(self=[super init])) 无效?

出于审美原因,我决定改变这个:if((self=[superinit])){//initself}returnself;进入这个:if(!(self=[superinit]))returnnil;//initselfreturnself;理论上,它们做同样的事情。第一个是经典方式,简单有效。调试第二个,发现差不多可以了。“if”做对了,初始化代码也是,但是,在返回“self”之后,调试器回到“if”并返回nil!我用第二个类(class)制作的所有类(class)我都恢复使用“正确”的方式,因为它们是用nil启动的,但我真的很想知道为什么它会那样做!恐怕这可能是其他错误的结果!

(self的答案)swift阵列返回函数numberofrows中的0个计数(在tableview中,但其他任何地方都返回正确的数组。

我有一个项目,可以从Internet加载JSON文件,并将其存储在数组和词典中。当我在viewDitload或ViewDidDisappear中打印数组的计数或dict的计数时,我会在JSON文件中获得正确的50个计数。但是在numberOfrows和ObjectForvalue中,请呼叫tableviewDataSource,它将返回计数0。我忽略了一些东西,但是在窗口的打开和关闭时,数组中有信息,但是当表观视图以某种方式重新加载时,数组为空。这是我的代码,任何帮助都非常感谢importCocoaclassViewController:NSViewController,NSTableView

iphone - 什么时候用 self 访问属性,什么时候不访问?

谁能解释设置someObject=someOtherObject;和self.someObject=someOtherObject;之间的区别,如果someObject是用@property创建的类属性(非原子,保留)SomeTypesomeObject;为了澄清我有类似的东西:@interfaceSomeClass:NSObject{SomeType*someObject;}@property(nonatomic,retain)SomeType*someObject;@end我注意到,当我在没有self的情况下使用该属性时,有时会出现EXC_BADACCESS,这看起来很随机。当我使

objective-c - 了解 'self' 并将 self 设置为 super

我一直在关注许多教程,但我对自己感到失望。有人可以帮忙吗?我有下面的init,它是一个实例方法。-(id)initWithScore:(int)s{self=[superinit];if(self){score=s;}returnself;}现在通读代码,我将self设置为superinit,因此self现在指向super。然后我检查自己是否有效并将分数设置为等于我在InitWIthScore上发送的值。到目前为止我已经知道了。但现在我返回指向父类(superclass)的self,那么我如何返回我的子类?因此,假设有人调用我的类传入100,我的代码返回的是super而不是类,那么它是

iphone - 添加目标 :self versus addTarget:nil

我是iOS开发新手。当我以编程方式添加按钮时,我有点困惑。当我们将目标分配给按钮时,如下所示:[buttonaddTarget:selfaction:@selector(CallMe)forControlEvents:UIControlEventTouchUpInside];和[buttonaddTarget:nilaction:@selector(CallMe)forControlEvents:UIControlEventTouchUpInside];这两种情况都是调用CallMe方法。谁能给我解释一下这两行代码之间的实际区别是什么。如果有人能专门解释一下addTarget的工作原理

ios - 可以[self.window makeKeyAndVisible];在设置 rootviewcontroller 之前被调用

我的要求是UITabBarController是rootviewcontroller,在第一次启动应用程序时,我想显示UINavCon内的登录过程,我通过presentViewController显示它。我不希望UITabBarController第一次可见,也不希望登录UINavCon以模态方式弹出。我想让用户体验到,如果应用程序首次启动,登录UINavCon应该是可见的。所以这是我的代码:-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchO

ios - 由于弃用而替换 self->isa

我刚刚安装了Xcode4.6,现在我管理的一个古老代码中出现了新错误。编译器提示“直接访问objective-c的isa被弃用,取而代之的是object_setClass()和object_getClass()”,项目将无法构建。所以请告诉我,是:object_setClass(self,[CustomClassclass]);适当的替换:self->isa=[CustomClassclass];谢谢! 最佳答案 访问isa已经被弃用一段时间了,工具只是没有告诉你这个。值得注意的是,至少只要标记指针存在于obj-c中,它就已被弃用。

ios - 使用 [self.view.layer removeAllAnimations] 后,下一个动画不工作

问题是当我使用:[transLabel.layerremoveAllAnimations];(transLabel是一个显示信息的UILabel)之后,我尝试为这个Label添加一个新的动画[UIViewanimateWithDuration:showTimeanimations:^{transLabel.hidden=NO;transLabel.transform=CGAffineTransformMakeScale(1.5,1.5);}completion:^(BOOLfinished){transLabel.hidden=YES;transLabel.transform=CGAf

ios - 为什么 self.view.subviews 在 vi​​ewDidLoad 中是一个空数组?

我使用InterfaceBuilder创建了一堆UI元素,并使用IBOutlets将它们连接到我的ViewController。但是,当我尝试在我的ViewController的viewDidLoad方法中遍历self.view.subviews时,我发现subviews数组是空的。ViewController.xib:UIView|-UILabel-UIButton-//...morestuff-UIToolbarViewController.m:#import"ViewController.h"@interfaceViewController()//Interfaceelement