考虑这个ARC代码:
- (void)main {
NSString *s = [[NSString alloc] initWithString:@"s"];
[NSApp beginSheet:sheet
modalForWindow:window
modalDelegate:self
didEndSelector:@selector(sheetDidEnd:returnCode:context:)
contextInfo:(__bridge void *)s
];
}
- (void)sheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode context:(void *)context {
NSString *s = (__bridge_transfer NSString *)context;
}
Run Code Online (Sandbox Code Playgroud)
问题:在第7行,应该__bridge使用,或者__bridge_retained,或者无关紧要,或者选择是否依赖于字符串的保留计数(即,是否显式分配字符串与是否通过类初始化程序自动释放+[NSString stringWithString:]?
memory-management objective-c retaincount automatic-ref-counting toll-free-bridging
是否有一种直接的方法来查询SQLiteDatabase非String类型的选择参数?
特别是:如果arg是一个byte[]类型?
我能找到的最接近的东西是SQLiteDatabase.compileStatement(),SQLiteStatement你可以打电话bindBlob等等.不幸的SQLiteStatement是,查询并不好,因为它不会返回游标.
SQLiteCursor 看起来很有希望,但我无法弄清楚如何使用它.
下面的简单UIView绘制了一个圆角矩形。当我通过65或以下的拐角半径时,它会正确倒圆,但在66或以上时会产生一个完美的圆!这里发生了什么?仅当拐角半径等于框架宽度的1/2时,才应显示一个圆,但无论视图大小如何,似乎在半径约为1/3时都将绘制一个圆。此行为出现在iOS 7上。在iOS 6上,我得到了预期的行为。
#import "ViewController.h"
@interface MyView : UIView
@end
@implementation MyView
-(void)drawRect:(CGRect)rect {
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 200, 200) cornerRadius:65];
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextAddPath(c, path.CGPath);
[[UIColor redColor] set];
CGContextStrokePath(c);
}
@end
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
MyView *v = [[MyView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
[self.view addSubview:v];
}
@end
Run Code Online (Sandbox Code Playgroud)


我正在探索HealthKit API,并且很惊讶没有找到像nameon HKObjectType或者这样的方法HKSampleType.
在HealthKit中没有办法返回数量的本地化显示名称HKQuantityTypeIdentifierDietaryThiamin,以便第三方应用程序使用相同的字符串来表示健康应用程序的类型吗?我们是否应该自行决定翻译这些医学术语?
这个问题是关于使用Dropbox在多个iOS设备之间同步sqlite Core Data存储.考虑这种安排:
应用程序使用Core Data存储,调用它local.sql,保存在应用程序自己的存储中NSDocumentDirectory
该应用程序使用Dropbox Sync API观察用户Dropbox中的某个文件,例如, user/myapp/synced.sql
应用程序观察NSManagedObjectContextDidSaveNotification,并在每次保存时复制local.sql到user/myapp/synced.sql,从而替换后者.
当Dropbox的API通知我们synced.sql改变,我们做的第3部分或多或少相反:推倒核心数据堆栈,更换local.sql用synced.sql,并重新创建核心数据堆栈.用户同时在UI中看到"同步"或"正在加载".
问题:
A.这种安排是否非常低效,应该完全避免?如果我们能保证数据库的规模不大,该怎么办?
B.这种安排是否有利于文件腐败?通过增量/更改日志进行同步?如果是这样,请您详细说明原因?
在 iOS 8 上,UISplitViewController 似乎可以保存和恢复其子视图的状态,例如,主视图是否隐藏。
这是不可取的,因为我的应用程序应该始终以横向显示主视图并始终以纵向隐藏它。如果用户以横向模式关闭应用程序(保存横向状态)并以纵向模式重新打开它(恢复横向状态),则 UISplitViewController 会以错误的配置显示主视图。
我仍然需要为 UISplitViewController 提供一个恢复标识符,以便子视图控制器可以保存和恢复自己的状态。那么如何防止 UISplitViewController 恢复它自己的状态,或者覆盖这种行为呢?
uiviewcontroller uisplitviewcontroller ios state-restoration ios8
ios ×3
objective-c ×2
sqlite ×2
android ×1
cgcontext ×1
core-data ×1
drawing ×1
dropbox ×1
dropbox-api ×1
healthkit ×1
ios8 ×1
localization ×1
retaincount ×1
select ×1
sql ×1
translation ×1
uibezierpath ×1