小编fuz*_*oat的帖子

类方法实例范围?

我的问题是关于在+ planet中创建的对象的范围.我被告知"自动释放的对象将在它们创建的方法/函数的持续时间内保持不变"在我的示例中,我假设行星实例的范围在main()内,而不是在我执行的方法中初始的alloc/init?

+(Planet *) planet {
    gPlanetCount++;
    return [[[self alloc] init] autorelease];
}

int main(int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    Planet *outerMost;

    outerMost = [Planet planet];
    ...
    ... some code
    ...
    [pool drain];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

EDIT_001

int main(int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    Planet *outerMost;

    outerMost = [[Planet planet] retain]; // Added retain
    ...
    ... some code
    ...
    [outerMost release]; // …
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c

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

将NSData转换为float?

最初我认为下面提供的代码是有效的,"inBuffer"似乎正确地获得了4字节的数据,而且变量MDD_times也是正确的.

NSData *inBuffer;
float MDD_times;

// FLOAT_002
inBuffer = [inFile readDataOfLength:sizeof(float)];
[inBuffer getBytes: &MDD_times length:sizeof(float)];
NSLog(@"Time: %f", MDD_times);
Run Code Online (Sandbox Code Playgroud)

好的,让我扩展这个小(上面的代码更新),这是我得到的:

inBuffer = <3d2aaaab>
MDD_times = -1.209095e-12 (this will be 0.0416667 bigEndian)
NSLog(@"Time: %f", MDD_times) = Time: -0.000000
Run Code Online (Sandbox Code Playgroud)

它可能是不能容纳浮点值的NSLog,我将浮点数中的字节翻转到bigEndian,预期值"0.0416667"显示就好了.至少我知道NSData> float位正在按预期工作.

加里

objective-c

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

CLANG按值传递警告?

以下代码编译好......

int main (int argc, const char * argv[]) {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    // VARIABLES
    MDD *MDD_structure;
    NSString *mddFile = @"/Users/Gary/Code/Mdd/xTest.mdd";
    NSFileHandle *inFile;
    NSData *inBuffer;
    int MDD_fCount;
    int MDD_vCount;

    // OPEN FILE ON DISK
    inFile = [NSFileHandle fileHandleForReadingAtPath:mddFile];
    if(inFile == nil) NSLog(@"FILE: Open ... ERROR");
    else NSLog(@"FILE: Open ... OK");

    // READ FRAME COUNT
    inBuffer = [inFile readDataOfLength:sizeof(int)];
    [inBuffer getBytes:&MDD_fCount length:sizeof(int)];
    MDD_fCount = CFSwapInt32BigToHost(MDD_fCount);
    NSLog(@"FC: %d", MDD_fCount);
Run Code Online (Sandbox Code Playgroud)

但是当我通过静态分析器"CLANG LLVM 1.0"运行时,我得到以下内容......

warning: Pass-by-value argument in function call is …
Run Code Online (Sandbox Code Playgroud)

objective-c

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

在先前加载的视图上更新标签?

我正在开发一个基于应用程序标签栏的简单应用程序,它有两个视图.第一个是主应用程序,第二个是简单的指令屏幕.我想要做的是在第二个屏幕上更新标签,因为主应用程序中的内容发生了变化.因为第二个屏幕只有一个标签和一些文本很简单,所以一旦加载它我就不会卸载它.在第一个viewDidLoad之后,我可以很好地更新标签,但之后有一种方法可以从标签栏菜单中捕获连续的视图切换(当视图未加载时),这样我可以在下次交换视图时更新标签?

非常感谢

加里

iphone cocoa-touch objective-c

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

有和没有点符号?

我试着写下面而不使用点符号...

[scrollView setMinimumZoomScale: scrollView.bounds.size.width / image.size.width];
Run Code Online (Sandbox Code Playgroud)

这是正确的吗?

[scrollView setMinimumZoomScale: [scrollView bounds].size.width / [image size].width];
Run Code Online (Sandbox Code Playgroud)

欢呼加里.

iphone cocoa-touch objective-c

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

在对象上找不到属性"窗口"?

这出现在另一个问题中(由meronix友好地回答)但我很想知道这里发生了什么,这是一个LLVM/Clang问题,还是两个语句在某种程度上是不同的.

在此输入图像描述

我知道我可以通过添加(见下文)来解决这个问题,所以比任何事都更好奇......

在此输入图像描述

iphone cocoa-touch objective-c

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

标签 统计

objective-c ×6

cocoa-touch ×3

iphone ×3

cocoa ×1