我有以下代码.我偶尔会得到一个SIGSEGV.我有一种感觉,我错过了一些关于使用块的内存管理的东西.传递被替换的Urls是否安全,这是自动释放到这个块?那么修改实例变量formattedText呢?
NSMutableSet* replacedUrls = [[[NSMutableSet alloc] init] autorelease];
NSError *error = nil;
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:
(NSTextCheckingTypeLink | NSTextCheckingTypePhoneNumber)
error:&error];
if (error) {
return;
}
[detector enumerateMatchesInString:self.formattedText
options:0
range:NSMakeRange(0, [self.formattedText length])
usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
@try {
if (result.resultType == NSTextCheckingTypePhoneNumber) {
if (!result.phoneNumber) {
// not sure if this is possible
return;
}
self.formattedText = [self.formattedText stringByReplacingOccurrencesOfString:result.phoneNumber
withString:[NSString stringWithFormat:@"<a href=\"tel://%@\">%@</a>", result.phoneNumber, result.phoneNumber]];
}
else if (result.resultType == NSTextCheckingTypeLink) {
if (!result.URL) {
// not sure …Run Code Online (Sandbox Code Playgroud) 我们写了一个我们想要出售给公司的iPhone应用程序.该公司注册了iOS Enterprise计划.
我们如何用他们的证书签署我们的申请?我知道我们可以作为团队成员添加到他们的帐户中,但还有其他任何方式.
公司对我们生成证书申请有点不安,其中一位管理员会实际创建个人资料.他们担心我们可以使用此配置文件签署其他应用程序.
如果没有我们放弃申请来源,还有其他方法吗?简而言之,我们编写了应用程序,但希望公司使用他们的企业程序和证书对应用程序进行签名.我们也想要意识到他们的安全问题.
我们每隔一段时间就会得到"CoreData无法解决的错误".我们已阅读Apple文档,但不清楚允许保留的内容.我们一直非常谨慎地为每个线程创建一个上下文等.但是,我们的应用程序正在做的一件事是我们在UIViewControllers上保留NSManagedObjects(通常通过NSArray或NSDictionary).我猜测正在发生的事情是对象关系正在发生变化,我们没有处理适当的通知.
有没有人对Core Data的更好设计有任何建议?当我们得到错误时,我看不到我们实际上从上下文中删除了任何导致错误的东西.如果它们保持状态,是否有必要在我们的UIViewControllers上处理NSManagedObjectContextObjectsDidChangeNotification?任何建议,将不胜感激.
一旦PLCrashReporter检测到错误(异常,信号等)但在应用程序终止之前,我们希望执行其他处理(即记录当前状态).有没有人知道使用PLCrashReporter是否可行?
NSFetchedResultsController 设置为 5 以获取批量大小。我们注意到它的加载速度很慢,所以我们启用了 SQLDebug。出于某种原因,它一次加载 5 行,但它在初始加载时对所有 100 行执行此操作。加载后,它似乎一次加载 5 行。
在看控制台时,我看到查询运行了 20 次;共有 100 行。我原以为这会在前 5 行中运行 1 次,并且当您滚动时,会加载更多行。我还尝试更改提取大小,它具有相同的行为。
获取结果控制器的设置如下。
- (NSFetchedResultsController*) fetchedResultsController {
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
[NSFetchedResultsController deleteCacheWithName:@"Root"];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Message" inManagedObjectContext:_context];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"conversation = %@", conversation];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc]
initWithKey:@"timestamp" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:5];
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:_context sectionNameKeyPath:nil
cacheName:@"Root"];
self.fetchedResultsController = theFetchedResultsController; …Run Code Online (Sandbox Code Playgroud) @protocol Runnable
- (id<Runnable>) works; //this compiles fine
- (Runnable *) broke; // get a compile error saying Expected ')' before 'Runnable'
@end
Run Code Online (Sandbox Code Playgroud)
我不确定我理解为什么xCode抱怨这- (Runnable *) broke;条线
iphone ×4
objective-c ×4
core-data ×2
code-signing ×1
crash ×1
enterprise ×1
fault ×1
xcode ×1