小编Tha*_*nks的帖子

为什么变量表现得如此奇怪?

我认为objective-c中的变量只是对内存中某个对象的引用.所以对于我的理解,结果必须是"一",因为最后我将str1的对象的内存地址分配给str2,之前我已经分配了str2的内存地址来测试.

NSString *str1 = [NSString stringWithCString:"one"];
NSString *str2 = [NSString stringWithCString:"two"];

test = str2; // test is an instance variable. I use no getter/setter here! just for testing!
str2 = str1;
NSLog(test); // = "two" ??
Run Code Online (Sandbox Code Playgroud)

variables cocoa memory-management object objective-c

2
推荐指数
1
解决办法
210
查看次数

是否正确地说名称包含new,alloc,create或copy的方法不会自动释放它们创建的对象?

据我所知,只有"方便"方法返回带有-autorelease的创建对象,因此接收者不负责该对象的内存.但是因为Apple说当你使用一个名为"new","alloc","create"或"copy"的方法时,你负责释放方法返回的对象,我认为这些方法应该不 - 自动释放这些物体.否则它们将是"方便的",并且只要他没有 - 获得所接收的物体,接收者将根本不负责任.我做对了吗?

iphone cocoa-touch memory-management objective-c uikit

2
推荐指数
2
解决办法
466
查看次数

调用self.myInstanceVariable和直接调用myInstanceVariable有什么区别?

这是一个月前我正在读一条关于那条线的.我不确定,但我认为如果我调用self.myInstanceVariable然后它会自动使用getter/setter,但是如果我直接调用myInstanceVariable = @"Foo",那么我会绕过任何getter/setter ,真的,非常糟糕.正确错误?

编辑:我在XCode中试过这个.

实现如下:

@implementation Test
@synthesize name;

+ (Test*)testWithName:(NSString*)name {
    Test* test = [self alloc];
    test.name = name;
    return [test autorelease];
}

- (void)setName:(NSString*)newName {
    NSLog(@"SETTER CALLED!!");
    if(name != newName) {
        [name release];
        name = [newName retain];
    }
}

- (NSString*)name {
    NSLog(@"GETTER CALLED!!");
    return name;
}

- (void)doWrongThing {
    NSString *x = name;
    NSLog(@"doWrongThing: %@", x);
}
- (void)doRightThing {
    NSString *x = self.name;
    NSLog(@"doRightThing: %@", x);
}
Run Code Online (Sandbox Code Playgroud)

测试代码看起来像这样:

Test *t = [Test testWithName:@"Swanzus Longus"];
//NSLog(@"%@", …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch objective-c uikit

2
推荐指数
1
解决办法
371
查看次数

Datasource对象属于哪里?控制器或型号?

我正在为UIScrollView实现一个数据源对象.是控制器的一部分,还是模型的一部分?我认为控制器,但不确定.它提供数据.但是数据可能来自网络中的sqlite3文件.所以实际上我会说它不是来自数据部分,因为它应该灵活到数据来源.你怎么看?

cocoa cocoa-touch datasource objective-c

2
推荐指数
1
解决办法
928
查看次数

错误消息"没有配置iPhone OS设备已连接".意思?

昨天我在我的设备上做了很多测试.突然,当我在Xcode中点击Build&Go时,我收到此错误消息.首先,它询问我是否可以使用我的密钥签名.我单击是,然后出现该错误消息.我的iPod像往常一样连接,iTunes自动启动,我关闭它以防止中断.

我尝试重启Xcode.没有帮助.我的Apple Dev Enrollment是全新的.知道问题可能是什么?

编辑:在窗口>管理器中我可以看到此消息:

您的移动设备遇到意外错误(0xE8000001)尝试断开连接并关闭设备电源; 然后打开设备电源并重新连接.

我在断电时重启了它,但我仍然收到了这条消息.

iphone xcode cocoa-touch provisioning uikit

2
推荐指数
1
解决办法
9597
查看次数

理论上讲:如何将alpha组件预先复制到iPhone OS中的PNG的其他组件中,以及如何正确地将其解复用?

实际上,我认为有一种简单的方法可以实现这一目标.我需要的是纯alpha值信息.为了测试,我有一个50 x 55 px的PNG,在每个边缘,一个5x5像素的矩形是完全透明的.在这些领域中的α必须是0.Everywhere否则它必须是255我做了非常肯定我的PNG正确创建的,它看起来也正常.

请告诉我这是否在理论上是正确的:我创建了一个只有alpha通道的CGImageRef,没有别的.这是通过CGBitmapContextCreate和kCGImageAlphaOnly作为参数完成的.CGBitmapContextGetBitsPerPixel(context)返回1,因此它表明我每个像素只有一个组件:所需的alpha值.我一直在读CGBitmapContextCreate将处理从给定图像到新创建的上下文的所有转换.我的图像之前是带有透明度的PNG-24,但是来自Xcode的pngcrunch似乎以某种方式转换它们.

所以,理论上说:此时我是否有机会获得正确的,无法预测的alpha?我得到的值似乎几乎匹配,但在一个大的5x5透明方块中,我得到的值如19,197,210,0,0,0,98等等.如果它们是真的,我将不得不从图像中看到一些东西.图像本身是纯蓝色.

iphone cocoa png core-graphics png-24

2
推荐指数
2
解决办法
1515
查看次数

在objective-c中写入0.1和0.1f之间的区别在哪里?

有时候我写一个浮点数:

0.1

有时我添加一个f,如:

0.1F

通常看来两种方式都有效.我从一些示例代码中选择了f.但实际上有什么用呢?我确定这意味着"漂浮",但我真的需要吗?

objective-c

2
推荐指数
1
解决办法
8262
查看次数

如何正确获取presentationLayer的当前变换?

我试过这个:

CATransform3D rotationTransform = [[self.layer presentationLayer] transform];
Run Code Online (Sandbox Code Playgroud)

这将不起作用,因为编译器将抛出警告和错误:

警告:找到多个方法"-transform".错误:初始化程序无效.

那么我试过这个:

CATransform3D rotationTransform = [[self.layer presentationLayer] valueForKey:@"transform"];
Run Code Online (Sandbox Code Playgroud)

错误:初始化程序无效.

这有什么问题?

iphone core-animation

2
推荐指数
1
解决办法
1423
查看次数

在iPhone-OS中使用SQLite3的最简单方法是什么?

我听说在iPhone项目中使用普通的SQLite3是个坏主意.您使用哪些框架,库,包装器等?哪个值得一看?

sqlite iphone cocoa-touch uikit

2
推荐指数
1
解决办法
624
查看次数

NSUserDefaults:+ resetStandardUserDefaults方法的优点是什么?我该如何提供"系统设置"?

我希望用户能够做出一些偏好,如颜色,首选图像等.当我使用NSUserDefaults时,首次启动应用程序时将没有首选项,对吧?所以,每次我想获得喜欢的偏好

NSInteger avatarID =(NSInteger)[[NSUserDefaults standardUserDefaults] objectForKey:@"avatar"];

我必须检查它是否为null,然后使用我的系统首选项.但后来我在文档中看到了这一点:+ resetStandardUserDefaults

在某处保存了两个默认分支吗?来自用户的那些,以及来自开发者的那些?

iphone cocoa-touch nsuserdefaults uikit

2
推荐指数
1
解决办法
3877
查看次数