小编Sno*_*man的帖子

在Core Graphics中绘制子弹箭头

除非绝对必要,否则我不想重新发明轮子,所以我想看看如何使用Core Graphics绘制这样的箭头:

在此输入图像描述

有谁知道我怎么能开始这个?这是我到目前为止,但它绘制一个正三角形而不是括号形状:

    CGPoint origin = CGPointMake(100, 20);
    UIBezierPath *path = [UIBezierPath bezierPath];
    [path moveToPoint:origin];
    [path addLineToPoint:CGPointMake(origin.x-10, origin.y-20)];
    [path addLineToPoint:CGPointMake(origin.x-10, origin.y+20)];
    [[UIColor redColor] set];
    [path fill];
Run Code Online (Sandbox Code Playgroud)

iphone core-graphics objective-c ios

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

在引用之间获取字符串的NSRange?

我有一个字符串:

他昨天说"你好伙计".

我想从第一个报价到最后一个报价获得NSRange.所以我尝试过这样的事情:

NSRange openingRange = [title rangeOfString:@"\""];
NSRange closingRange = [title rangeOfString:@"\""];
NSRange textRange = NSMakeRange(openingRange.location, closingRange.location+1 - openingRange.location);
Run Code Online (Sandbox Code Playgroud)

但我不确定如何区分第一个引用和第二个引用.我该怎么做?

iphone objective-c ios

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

在iOS 5中保存Twitter帐户?

我正在使用以下代码访问用户的Twitter帐户:

ACAccountStore *store = [[ACAccountStore alloc] init];
ACAccountType *twitterAccountType = 
[store accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];

//  Request access from the user for access to his Twitter accounts
[store requestAccessToAccountsWithType:twitterAccountType 
                 withCompletionHandler:^(BOOL granted, NSError *error) {
                     if (!granted) {
                         NSLog(@"User rejected access to his account.");
                     } 
                     else {
                         NSArray *arrayOfAccounts = [store accountsWithAccountType:twitterAccountType];
                         if ([arrayOfAccounts count] > 0)  {
                             ACAccount *acct = [arrayOfAccounts objectAtIndex:0];
                         }
}];
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何在应用会话之间保存用户的帐户?对于当前会话,我可以将其存储在实例变量中,但如果用户退出应用程序并返回,我该如何获得该帐户?我有电话[store requestAccessToAccountsWithType:twitterAccountType...]吗?每次?

twitter objective-c ios

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

确定一个对象是否被多个线程访问?

我正在进行零星的EXC_BAD_ACCESS崩溃,我认为这与多线程问题有关.(我尝试使用Zombies进行分析,但是在分析时应用程序不会崩溃).所以我想知道是否有任何类型的机制,为了调试目的,确定一个对象是否被多个线程同时访问?如果是这样的话,也许以某种方式打印日志声明?

iphone cocoa objective-c ios

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

UIKit字符串绘制方法中的错误?

为了复制我在我的应用程序中遇到的崩溃,我不得不创建一个稍微夸张的重复率的示例,这可能不实用,但是它可以准确地演示我的应用程序中发生了什么.在后台线程上使用时绘制NSString时NSOperations,有时会在崩溃之前对堆栈跟踪上的最后一次调用发生崩溃WebCore::FontFallbackList::~FontFallBackList().

- (void)viewDidLoad
{
    queue = [[NSOperationQueue alloc] init];
    [NSTimer scheduledTimerWithTimeInterval:0.0001 target:self selector:@selector(timerDidFire:) userInfo:nil repeats:YES];
}

-(void)timerDidFire:(NSTimer*)timer
{
    NSBlockOperation *op = [NSBlockOperation blockOperationWithBlock:^{
        CGRect rect = CGRectMake(0, 0, 50, 50);
        UIGraphicsBeginImageContextWithOptions(CGSizeMake(rect.size.width, rect.size.height), YES, 0.0);
        NSString *string = @"Sd";
        [string drawInRect:rect withFont:[UIFont boldSystemFontOfSize:12] lineBreakMode:UILineBreakModeTailTruncation]; 
        UIGraphicsEndImageContext();     
    }];
    [queue addOperation:op];
}
Run Code Online (Sandbox Code Playgroud)

您可以使用上面的代码轻松复制此崩溃.任何人都可以了解这次事故的性质,以及为什么会发生这种情况?(这个问题的解决方案是设置[queue setMaxConcurrentOperations:1];)

iphone objective-c ios

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

在Objective C中将HSB颜色转换为RGB

我正在尝试使用此算法将HSB值转换为RGB值,但我没有得到正确的值.我有一个29的固定s,100的固定b,并为h值生成0-360之间的随机整数,并将它们送入函数以获得RGB:

在此输入图像描述

float h = (arc4random() % 360);
float s = 29;
float b = 100;
HSL2RGB(h, s, b, &red, &green, &blue);
NSLog(@"r:%f g:%f b:%f", red, green, blue);
Run Code Online (Sandbox Code Playgroud)

输出:

r:2971.000000 g:2971.000000 b:2971.000000
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

float h = (arc4random() % 360)/1000.0;
float s = 0.29;
float b = 1.0;
HSL2RGB(h, s, b, &red, &green, &blue);
NSLog(@"r:%f g:%f b:%f", red, green, blue);
Run Code Online (Sandbox Code Playgroud)

输出:

r:1.000000 g:1.000000 b:1.000000

我做错了什么,或者这个算法搞砸了?

colors objective-c ios

4
推荐指数
2
解决办法
3916
查看次数

所有bool的简写是或所有bool NO?

通常在我的代码中,我需要检查x个bool的状态是否都为真,或者所有bool都是false.所以我这样做:

BOOL first, second, third;
if((first && second && third) || (!first && !second && !third))
     //do something
Run Code Online (Sandbox Code Playgroud)

作为一个懒惰的程序员,我想知道这种查询是否有一些数学简写,而不是每次都要输入这整个东西?

math logic boolean objective-c

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

Google App Engine NDB祖先查询无效

我正在尝试执行以下查询:

query = Comment.query(ancestor = userKey, ndb.OR(Comment.modifiedDate > lastSyncDate, Comment.activityDate > lastSyncDate))
Run Code Online (Sandbox Code Playgroud)

1等号(=)是文档说我们应该拥有它的方式,但是当我只有1个等号(构建错误)时,我的应用程序不会运行.如果我使用两个等号ancestor == userKey,那么应用程序运行,但我得到了NameError: global name 'ancestor' is not defined.是什么赋予了?

我还尝试了此查询的另一个变体,但同样的问题出现了:

query = Comment.query(ndb.AND(ancestor == userKey, ndb.OR(Comment.modifiedDate > lastSyncDate, Comment.activityDate > lastSyncDate)))
Run Code Online (Sandbox Code Playgroud)

python google-app-engine

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

这是使用快速枚举的低效方法吗?

我并不完全理解枚举有多快的细节,但比较以下两种情况:

for(NSObject *object in self.myParent.parentsParents.granfathersMother.cousin.unclesNephew.array) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

NSArray *array = self.myParent.parentsParents.granfathersMother.cousin.unclesNephew.array;
for(NSObject *object in array) {
     // do something
 }
Run Code Online (Sandbox Code Playgroud)

在第一个例子中,它会在每次迭代时通过整个链来获得数组吗?我应该使用第二种方式吗?

objective-c fast-enumeration ios

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

使默认属性无法访问?

UITableViewCell默认情况下,A 具有textLabel属性.现在,我已经进行了子类化UITableViewCell,并设置了我自己的文本布局系统,该系统不使用textLabel.为了减少出错的可能性,我想让textLabel编译器无法使用默认属性(自动完成),如果我尝试在类外部访问它,则代码将无法编译.

只读属性仍然允许我访问和更改标签的属性,这样就无法工作了.

有没有办法做到这一点?

编辑:

所以我到目前为止最接近的是重新声明我的子类中的属性并弃用它:

@property (nonatomic) UILabel *textLabel NS_DEPRECATED_IOS(2_0, 3_0);
Run Code Online (Sandbox Code Playgroud)

如果我试图访问该属性,目前给我一个警告.但这并没有完全将它从编译器中隐藏起来,它也给了我一个警告"可用性与之前的声明不匹配".

cocoa objective-c

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