小编Ste*_*veo的帖子

ARC:__bridge与__bridge_retained使用contextInfo测试用例

考虑这个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

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

Android:如何使用非字符串选择args查询SQLiteDatabase?

是否有一种直接的方法来查询SQLiteDatabaseString类型的选择参数?

特别是:如果arg是一个byte[]类型?

我能找到的最接近的东西是SQLiteDatabase.compileStatement(),SQLiteStatement你可以打电话bindBlob等等.不幸的SQLiteStatement是,查询并不好,因为它不会返回游标.

SQLiteCursor 看起来很有希望,但我无法弄清楚如何使用它.

sql sqlite select android

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

iOS 7上疯狂的圆角矩形UIBezierPath行为。如何处理?

下面的简单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)

在此处输入图片说明 在此处输入图片说明

在此处输入图片说明

drawing objective-c cgcontext ios uibezierpath

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

显示HealthKit类型的名称

我正在探索HealthKit API,并且很惊讶没有找到像nameon HKObjectType或者这样的方法HKSampleType.

在HealthKit中没有办法返回数量的本地化显示名称HKQuantityTypeIdentifierDietaryThiamin,以便第三方应用程序使用相同的字符串来表示健康应用程序的类型吗?我们是否应该自行决定翻译这些医学术语?

translation localization internationalization ios healthkit

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

评估使用Dropbox同步核心数据的策略

这个问题是关于使用Dropbox在多个iOS设备之间同步sqlite Core Data存储.考虑这种安排:

  1. 应用程序使用Core Data存储,调用它local.sql,保存在应用程序自己的存储中NSDocumentDirectory

  2. 该应用程序使用Dropbox Sync API观察用户Dropbox中的某个文件,例如, user/myapp/synced.sql

  3. 应用程序观察NSManagedObjectContextDidSaveNotification,并在每次保存时复制local.sqluser/myapp/synced.sql,从而替换后者.

  4. 当Dropbox的API通知我们synced.sql改变,我们做的第3部分或多或少相反:推倒核心数据堆栈,更换local.sqlsynced.sql,并重新创建核心数据堆栈.用户同时在UI中看到"同步"或"正在加载".

问题:

A.这种安排是否非常低效,应该完全避免?如果我们能保证数据库的规模不大,该怎么办?

B.这种安排是否有利于文件腐败?通过增量/更改日志进行同步?如果是这样,请您详细说明原因?

sqlite core-data dropbox dropbox-api data-synchronization

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

iOS 8 中的 UISplitViewController 状态恢复

在 iOS 8 上,UISplitViewController 似乎可以保存和恢复其子视图的状态,例如,主视图是否隐藏。

这是不可取的,因为我的应用程序应该始终以横向显示主视图并始终以纵向隐藏它。如果用户以横向模式关闭应用程序(保存横向状态)并以纵向模式重新打开它(恢复横向状态),则 UISplitViewController 会以错误的配置显示主视图。

我仍然需要为 UISplitViewController 提供一个恢复标识符,以便子视图控制器可以保存和恢复自己的状态。那么如何防止 UISplitViewController 恢复它自己的状态,或者覆盖这种行为呢?

uiviewcontroller uisplitviewcontroller ios state-restoration ios8

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