我在NSDictionary类别中有以下方法,可以进行深层复制,工作正常.
我刚从Xcode 4.1升级到4.2,Analyze函数为此代码提供了两个分析器警告,如下所示:
- (id)deepCopy;
{
id dict = [[NSMutableDictionary alloc] init];
id copy;
for (id key in self)
{
id object = [self objectForKey:key];
if ([object respondsToSelector:@selector(deepCopy)])
copy = [object deepCopy];
else
copy = [object copy];
[dict setObject:copy forKey:key];
// Both -deepCopy and -copy retain the object, and so does -setObject:forKey:, so need to -release:
[copy release]; // Xcode 4.2's Analyze says this is an incorrect decrement of the reference count?!
}
return dict; // Xcode 4.2's Analyze says …Run Code Online (Sandbox Code Playgroud) 我有一个iPhone项目,我正在创建一个免费/精简版.我创建了第二个目标,此时我正在尝试处理每个目标所具有的不同接口.在目标之间几乎所有视图都会有所不同,因为它们至少会在顶部有一个adView.但是,有些观点在几个方面有所不同.
我想知道是否可以为每个要加载的视图控制器创建两个具有相同名称的xib.lite xib将进入它自己的目录,我只会将它添加到lite目标的bundle中.由于存在单独的bundle,我认为如果正确的xib在正确的bundle中,我就不必区分我想加载的xib代码.
我正在尝试使用xcode 4.2执行此操作,但当我尝试打开具有相同名称的第二个xib时xcode崩溃.
在此先感谢您的帮助.
我正在编写一个C++析构函数(我希望这是正确的术语;我是C++的新手)并且我对垃圾收集的确切需要并不是肯定的.假设我有2个指针作为实例变量我需要垃圾收集吗?如果我有一个对象作为实例变量呢?或指向对象的指针?
对于究竟需要删除的内容以及自动清理的内容,我只是有点模糊.
谢谢
我正在查看其他人的代码,但它似乎是RELEASE对象视频,但随后继续使用它.
现在从我对面向对象编程语言的理解,一旦它被发布,它应该从内存中释放出来......
我看不出它有什么参考......但我认为这是没关系的原因.看起来像是一件奇怪的事情,(当你没有完成它时释放它,为什么不使用autorelease例如).
self.video = [[VideoFrameExtractor alloc] initWithVideo:[Utilities bundlePath:@"sophie.mov"]];
[video release];
// set output image size
video.outputWidth = 426;
video.outputHeight = 320;
Run Code Online (Sandbox Code Playgroud) 我制作了一个通用应用程序,从该应用程序,我使用不同的图像来制作不同的应用程序(相同的应用程序,不同的图像).
直到现在我的想法一直是我每次生成一个新的应用程序,我复制了代码并更改了图像(有时还有一些代码行).但每次我在主应用程序中更改某些内容时,我都必须在所有子应用程序中进行更改.
我一直在考虑为此使用目标(每次我创建一个新目标时,我使用一个新目标,并将新文件夹图像链接到它),但我不确定这一点,因为我以前从未使用过目标.
这是最好的方法吗?
如果是,那么最好的方法是什么?我在我的项目中创建了一个新目标,但它在其中创建了一个全新的项目,其拥有类.
我有一个struct,player,如下:
struct player {
string name;
int rating;
};
Run Code Online (Sandbox Code Playgroud)
我想修改它,以便我用两个参数声明结构:
player(string, int)
Run Code Online (Sandbox Code Playgroud)
它为结构的内容分配这些值.
我的应用程序中有一个名为myButton的按钮,我要做的事情非常简单.我希望有一个整数,每次按下Button时都会自动添加一个整数.这是代码现在的样子:
- (IBAction)myButton {
NSLog(@"Button was pushed WOHHOP");
}
Run Code Online (Sandbox Code Playgroud)
这是在我的.m文件中,所以我需要在我的.h文件中声明一个整数吗?我只想在这个按钮动作中记录它的值,这样当我按下它时我可以看到每次增加一个数字.
任何建议都会有所帮助,谢谢!
好的,这是结构的定义:
typedef struct {
int first;
int last;
int count;
char * Array [50];
} queue;
Run Code Online (Sandbox Code Playgroud)
我使用另一个函数来初始化它
void initialize(queue * ptr){
ptr=malloc(sizeof(queue));
ptr->first=0;
ptr->last=0;
ptr->count=0;
}
Run Code Online (Sandbox Code Playgroud)
然后我用printf先打印出来,最后打印并计数.这三个都应该是零.然而,我实际得到的是,正如我预期的那样,count是0,但是第一个和最后一个是两个非常大的奇怪数字,并且每次运行程序时它们都会改变.谁能告诉我这里有什么问题?谢谢.
任何人都可以帮助,我有一些代码,我正在检查retainCount但它总是-1,至少应该是1?
这是我的代码,我做错了什么?
NSNumber* n = [[NSNumber alloc] initWithInt:100];
NSLog(@"Count of n : %i",[n retainCount]);
NSNumber* n1 = n;
NSLog(@"Count of n : %i",[n retainCount]);
NSLog(@"Count of n1: %i",[n1 retainCount]);
NSLog(@"Address of n : %p", n);
NSLog(@"Address of n1: %p", n1);
Run Code Online (Sandbox Code Playgroud)
我得到的另一个奇怪的事情是关于%i,说它实际上返回了一个uint,所以我将%i替换为%u,现在我得到了一个非常长的retainCount数字 - 4294967295
有点困惑,有什么想法吗?
提前致谢
iphone ×4
objective-c ×4
ios ×3
xcode ×3
c++ ×2
oop ×2
struct ×2
allocation ×1
analyzer ×1
c ×1
class-design ×1
cocoa ×1
constructor ×1
deep-copy ×1
destructor ×1
foundation ×1
ide ×1
macos ×1
pointers ×1
raii ×1
release ×1
xcode4.2 ×1
xib ×1