小编Tha*_*nks的帖子

有什么理由我更喜欢NSArray而不是NSMutableArray吗?

我觉得当我使用NSArray时,我可能会在将来的某个时候限制自己.是否有任何充分的理由选择这种"原始"而不是"复杂"的,这是可变的?

iphone collections cocoa-touch

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

如何引用自动释放池中的对象?

我想知道自动释放池是否包含对它所拥有的对象的强或弱引用.我猜它们很弱.当我将一个对象添加到自动释放池时,它不会立即释放,但会在池耗尽时释放,对吧?所以引用应该是弱的,即当我将对象添加到自动释放池时,引用计数(或保留计数)保持不变?

iphone cocoa-touch memory-management autorelease

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

是"赋值"@property编译器指令的默认设置吗?

如果我定义一个属性,只需:

@property(nonatomic) UIButton* button;
Run Code Online (Sandbox Code Playgroud)

然后我认为这是一个"分配"属性.那是对的吗?

iphone cocoa-touch properties uikit

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

为什么可以定义一个具有超类类型的变量,但是为它分配一个子类的对象?

这对我来说还不是很清楚.例:

NSArray*arr = [[NSMutableArray alloc] init];

我的意思是......是的,它有效.但是:为什么我可以告诉编译器"嘿,我的var只是一个NSArray,你只需要保留空间以便它适合那里"然后,实际上,有一个大的,胖的NSMutableArray进入那个有道路的地方更多的方法,更多的实例变量,只需要更多的空间.我的意思是......这怎么可能?

我会理解另一种方式:左侧是大胖子NSMutableArray,右侧是小型NSArray.根据我的理解,超类总是比子类更小,更复杂.子类可能会覆盖一些东西,但它也可能会添加一些东西.对?

想象一下,你买了一个车库,因为你的妻子通过电话告诉你,她买了一些可以开车的东西.然后,它不仅仅是你想象的小型车.她买了一辆大卡车.它不适合那里.

那么我该如何思考这个问题呢?;)

这适用于社区维基,只是因为其他人也感到困惑.

c objective-c

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

为什么我的加速度计反应如此缓慢?

我问他们每秒50Hz/50次数据.当我突然将设备在x轴上翻转90度而设备在显示器朝上的桌子上是平的时,这些值会非常缓慢地移动到该位置的"目标"值.

现在奇怪的是:如果我提高测量速率,在突然将设备翻转90度时,该值将更快地移动到该新值.但是,如果我每秒只询问一次新值,则需要很长时间才能达到目标值.这可能是什么原因?

我没有做任何类型的数据聚合,也没有积累任何东西.我只是做一些简单的过滤来摆脱噪音.我的方法看起来像这样:

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
    // Use a basic low-pass filter to only keep the gravity in the accelerometer values for the X and Y axes
    // accelerationX is an instance variable
    accelerationX = acceleration.x * 0.05 + accelerationX * (1.0 - 0.05);

    // round
    int i = accelerationX * 100;
    float clippedAccelerationValue = i;
    clippedAccelerationValue /= 100;

    [self moveViews:clippedAccelerationValue];
}
Run Code Online (Sandbox Code Playgroud)

稍后,在我的-moveViews:方法中,我这样做:

-(IBAction)moveSceneForPseudo3D:(float)accelerationValue {
    if(fabs(lastAccelerationValue - accelerationValue) > 0.02) { // some little treshold to prevent …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch accelerometer uikit

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

当我改变它的中心时,为什么我的观点会四处移动?

我认为这是框架的oringin决定了视图的位置.但是当我像这样改变中心属性时

myView.center = CGPointMake(myView.center.x - 20, myView.center.y);
Run Code Online (Sandbox Code Playgroud)

我的观点将向左移动20个单位.我想改变中心点以相对于该点进行一些旋转.

iphone cocoa-touch uikit

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

如何制作一组常量,以提高方法的可用性?

我写了一个做一些图形计算的方法.在那里,你可以指定一个起始方向,如"从左边","从右边","从底部","从顶部".

现在我不希望我的方法的用户传递混乱的值,如1,2,3或4甚至字符串.没有那样的事.相反,我想创建常量,如:

kFromLeft,kFromRight,kFromTop,kFromBottom

我在Apple头文件中看到过这个:

enum CGImageAlphaInfo {
    kCGImageAlphaNone,              
    kCGImageAlphaPremultipliedLast,  
    kCGImageAlphaPremultipliedFirst, 
    kCGImageAlphaLast,               
    kCGImageAlphaFirst,              
    kCGImageAlphaNoneSkipLast,       
    kCGImageAlphaNoneSkipFirst,     
    kCGImageAlphaOnly                
};
typedef enum CGImageAlphaInfo CGImageAlphaInfo;
Run Code Online (Sandbox Code Playgroud)

我不明白的五件事/我不清楚:

1)为什么有一个分号将定义与typedef分开?

2)为什么他们像parot一样重复CGImageAlphaInfo?

3)如果我在我的头文件中放入这样的东西,我会在我的方法中说参数的类型是CGImageAlphaInfo(当然我会有不同的名字),对吧?

4)我通常会以这样的方式指定这些常量的值?(例):

#define kCGImageAlphaNone 100
#define kCGImageAlphaPremultipliedLast 300
#define kCGImageAlphaPremultipliedFirst 900
Run Code Online (Sandbox Code Playgroud)

5)我是否需要将这些常量设置为这样的愚蠢值?或者我可以在我的方法中检查哪个常量传入,比如

if(paramConst == kCGImageAlphaNone) {...}
Run Code Online (Sandbox Code Playgroud)

cocoa cocoa-touch objective-c

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

我可以在UIView + beginAnimations的上下文参数中设置什么样的值:context:?

我不明白这个:

+ (void)beginAnimations:(NSString *)animationID context:(void *)context
Run Code Online (Sandbox Code Playgroud)

(void*)---->我可以在这提供什么样的数据?

iphone cocoa-touch core-animation uikit

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

有没有一种简单的方法可以确定两个变换是否相同?

我试过这个,但这不起作用:

CATransform3D currentTransform = self.layer.transform;
CATransform3D identityTransform = CATransform3DIdentity;
if (currentTransform == identityTransform)
    NSLog(@"the same");
Run Code Online (Sandbox Code Playgroud)

我真的很想比较矩阵中的每个单个字段;)我可以将这种情况作为一个整体的大事进行比较,还是我必须提取每个值进行比较?

iphone core-animation

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

是否有未使用的函数我放入一个大的CoolFunctions.h/CoolFunctions.m文件,它包含在我的项目的任何地方?

我想为所有很酷的函数创建一个大文件,我发现它在某种程度上是可重用和有用的,并将它们全部放入该单个文件中.嗯,一开始我没有很多,所以我猜想制作几个文件并不值得考虑.我会使用pragma标记来直观地分隔它们.

但问题是:那些未使用的方法会不会受到任何影响?我的应用程序会爆炸还是性能较差?或者编译器/链接器是否足够聪明,知道不需要函数A和B,因此不会将其"代码"复制到我生成的应用程序中?

iphone objective-c

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