小编Cod*_*aFi的帖子

消息已发送到已解除分配的实例...在@synthesize期间发送?

我一直在使用来自Raphael Cruzeiro的PDF Annotator的代码,并且发现了许多内存泄漏(ARC已关闭,并将保留以支持旧设备).在修补了大部分内容之后,我对最后一对来说,他们让我难过.因此,在一个叫做类PDFDocument,他的属性了CGPDFPageRef,CGPDFDocument和一个自定义的注释类@synthesize"d.我不得不用释放来消除他的dealloc方法并消除一些悬空指针,除了一个小问题之外它很有效:在大约3个完整的保留 - 释放周期之后,它在@synthesize行崩溃了他的注释对象......我已经从未见过SIGABRT,因为在@synthesize期间发送了一个解除分配的对象,所以自然不知道如何修复它.如果我删除dealloc中的释放代码,它会泄漏,但是如果我将其保留,它就会崩溃.这是PDFDocument类的代码:

//.h

#import <Foundation/Foundation.h>

@class Annotation;

@interface PDFDocument : NSObject {
    Annotation *_annotation;
}

- (id)initWithDocument:(NSString *)documentPath;

- (NSInteger) pageCount;
- (void) loadPage:(NSInteger)number;
- (BOOL)save;

@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *hash;
@property (readwrite, nonatomic, assign) CGPDFDocumentRef document;
@property (readwrite, nonatomic, assign) CGPDFPageRef page;

@property (nonatomic, retain) NSString *version;

@property (nonatomic, assign) BOOL dirty;

@property (nonatomic, retain) Annotation *annotation;

@end

//.m
#import "PDFDocument.h" …
Run Code Online (Sandbox Code Playgroud)

memory-management core-graphics objective-c dealloc ios

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

iPad2与iPad3手动定位物品有何变化?

因为iPad 3("新iPad")拥有两倍的像素,我不经意地让我的任何图像的两倍大.但我的问题是,因为它有两倍的像素,如果我手动放置在屏幕上的一个对象,说CGRectMake,它会出现在iPad2的距离iPad3的不同的地方?
说我正在使用下面的代码在屏幕上定位按钮:

 CGRectMake(375,500,125,125); 
Run Code Online (Sandbox Code Playgroud)

由于iPad3的像素数是原来的两倍,因此它在X坐标上位于375像素不会出现在iPad 2与iPad3的不同位置?

我敢肯定,这是一个愚蠢的问题,任何有经验的iOS开发人员都会嘲笑,但由于简单的谷歌搜索没有改变任何东西,我想id问.

谢谢!

-Shredder2794

cocoa-touch ios ipad-2 ipad-3

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

从有符号整数创建CGEvent

在我继续之前,我想在这篇文章的序言中说这可能是最讨厌,彻头彻尾的邪恶,令人讨厌的话题,所以我不希望任何答案都包含"合法"代码.

在尝试访问OS X Mountain Lion用于包含热键组合以激活听写的内部首选项文件时,我遇到了一些精美的有符号整数,其中包含System Preferences.app中定义的键代码.问题是,我能想到把它们变成a的唯一方法CGEvent是通过并基本解析出给定密钥代码的位掩码,这是一种潜在的无结果和烦人的努力.而且因为CGEvent方便地为内部struct(__CGEvent)定义了类型,所以没有办法看到它的内部组织(换句话说,我malloc()无法解决这个问题).到目前为止我所获得的是以下代码:

/***************************************UNSAFE*****************************************************/
//1048584, -1048585 - Two Left CMD presses; 1048576, -1048577 - Two CMD presses; 8388608, -8388609 - Two Fn presses; 1048592, -1048593 - Two Right CMD presses
- (void)forceDictation {

    NSString *path = [[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject]stringByAppendingPathComponent:@"Preferences/com.apple.symbolichotkeys.plist"];
    NSDictionary *dictationPrefs = [NSDictionary dictionaryWithContentsOfFile:path];
    NSDictionary *dictationDict = dictationPrefs[@"AppleSymbolicHotKeys"];
    NSDictionary *keyvalueDict = dictationDict[@"164"];
    NSDictionary *valueDict = keyvalueDict[@"value"];
    NSArray *parameters = valueDict[@"parameters"];
    NSInteger firstCode = [[parameters objectAtIndex:0]longLongValue];
    NSInteger secondCode = …
Run Code Online (Sandbox Code Playgroud)

macos cocoa hotkeys objective-c bitmask

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

lroundf(), floor() 和 nearintf() 有什么区别?

我知道上面提到的用于舍入浮点值和双精度值。但是有人可以解释一下每个值是如何舍入的吗?我找不到任何相关文档。

c

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

多分号线结尾:可以接受吗?

所以,当我为我的下一个应用程序更新编写一些代码时,我注意到一些奇怪的事情:你可以在Objective-C语句的末尾加上大量的分号,它会编译得很好!哎呀,它的运行方式也一样.为什么这个世界有效呢?

syntax xcode objective-c line-endings

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

等待后台线程的标志

在启动我的程序时,我会触发第二个线程来完成一些后台工作.这个线程永远不会死,但我需要等待它完成它正在做的事情才允许主线程继续.

在等待第二个线程更新它的状态时,如何阻止和恢复主线程?

cocoa multithreading objective-c

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

如何将参数从一个ViewController传递到另一个?

如何将参数从一个ViewController传递到另一个(我在故事板中定义了ViewControllers)?putExtra在Android或任何Bundle中是否有类似的值来放置值?我需要从第一个ViewController读取一些值并传递给另一个要发出POST请求的值.

iphone objective-c ios ios5

-3
推荐指数
1
解决办法
634
查看次数