小编iMa*_*din的帖子

iOS 5 Twitter Framework和completionHandler块 - "在这个块中强烈捕获'自我'可能会导致保留周期"

我是编程和Objective-C的新手,我正在尝试解决我的代码有什么问题.我已经阅读了一些关于块的内容,但我不知道到目前为止我所阅读的内容与我的代码有什么关系.

我的代码使用的是iOS 5 Twitter Framework.我使用Apple提供的大多数示例代码,所以我实际上一开始并不知道我使用了一个块作为完成处理程序.

现在我从Xcode 4获得了这两条消息:" 1.块将被捕获对象强烈保留的对象保留 ",并且" 在此块中捕获'自我'可能会导致保留周期 ".

基本上,我所做的是删除Apple在其完成处理程序中使用的代码(使用TWTweetComposeViewControllerResultCancelled和TWTweetComposeViewControllerResultDone的switch语句)并使用我的if语句[imagePickerController sourceType].

因此,sendTweet在将图像添加到推文后调用.

我希望有人可以向我解释为什么会这样,以及我如何解决它.另外:我可以将完成处理程序代码放入方法而不是块中吗?

- (void)sendTweet:(UIImage *)image
{
    //adds photo to tweet
    [tweetViewController addImage:image];

    // Create the completion handler block.
    //Xcode: "1. Block will be retained by an object strongly retained by the captured object"
    [tweetViewController setCompletionHandler:
                             ^(TWTweetComposeViewControllerResult result) {
            NSString *alertTitle,
                     *alertMessage,
                     *otherAlertButtonTitle,
                     *alertCancelButtonTitle;

            if (result == TWTweetComposeViewControllerResultCancelled) 
            {
                //Xcode: "Capturing 'self' strongly in this block is likely to lead to a retain cycle" …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c ipad objective-c-blocks ios5

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

UIView animateKeyframesWithDuration与标准动画块动画不同

我最近发现了一些UIView动画代码,并注意到它没有animateKeyframesWithDuration:delay:options:animations:completion:正确使用该方法,并且一直试图修复它,但由于某种原因,动画不完全相同.

这是我找到的代码:

view.transform = CGAffineTransformMakeTranslation(300, 0);

[UIView animateKeyframesWithDuration:duration/4 delay:delay options:0 animations:^{
    // End
    view.transform = CGAffineTransformMakeTranslation(-10, 0);
} completion:^(BOOL finished) {
    [UIView animateKeyframesWithDuration:duration/4 delay:0 options:0 animations:^{
        // End
        view.transform = CGAffineTransformMakeTranslation(5, 0);
    } completion:^(BOOL finished) {
        [UIView animateKeyframesWithDuration:duration/4 delay:0 options:0 animations:^{
            // End
            view.transform = CGAffineTransformMakeTranslation(-2, 0);
        } completion:^(BOOL finished) {
            [UIView animateKeyframesWithDuration:duration/4 delay:0 options:0 animations:^{
                // End
                view.transform = CGAffineTransformMakeTranslation(0, 0);
            } completion:^(BOOL finished) {
            }];
        }];
    }];
}];
Run Code Online (Sandbox Code Playgroud)

这有两个问题:

  1. 应该使用关键帧动画而不是在完成块内嵌套动画.
  2. 使用时animateKeyframesWithDuration:delay:options:animations:completion:你应该调用addKeyframeWithRelativeStartTime:relativeDuration:animations:动画块内的方法.如果不调用此方法,则此方法的行为类似于标准UIView动画块.

请参阅Apple有关此方法的文档. …

core-animation objective-c uiview uiviewanimation ios7

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

Xcode 6使用XLIFF对复数和性别进行本地化

在Xcode 6中,XLIFF文件格式现在用于字符串的本地化.但是,我需要本地化复数和性别.我怎么能在Xcode 6中做到这一点?

据我所知,XLIFF文件现在替换了Localizable.strings文件.在iOS 7/OS X 10.9中,我们可以通过添加Localizable来本地化复数和性别.stringsdict但这需要Localizable.strings存在.但是由于现在没有Localisable.strings文件,我如何才能使Localizable.stringsdict文件起作用?

localization xliff xcode6

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

如何让NSTextField使用NSTextFieldCell的自定义子类?

我一直在寻找一个解决方案,使我的NSTextField底部对齐,我发现了这个,并根据我的需要进行了调整.所以现在我有了这个自定义的NSTextFieldCell但是如何告诉我的NSTextFields使用这个类(以编程方式)?

objective-c nstextfield nstextfieldcell

7
推荐指数
2
解决办法
3464
查看次数

在NSScrollView中,滚动条背景不透明

Scroller http://f.cl.ly/items/1b1v2D2X1D092k2R1C0i/Scrollbar.png

嗨!我正在使用NSScrollView,它具有基于视图的NSTableView.每当表格添加一个表格单元格时,滚动条就会显示,直到您看到滚动条没有透明背景为止.由于某种原因,它的背景是白色的,你可以在图像上看到.

我使用IB来设置NSScrollView和NSTableView,我找不到任何可以禁用滚动条背景的选项.可能导致这种情况的任何想法?

更新:Xcode中我的NSScrollView的设置

Xcode http://f.cl.ly/items/2R0k1x0T1X0A160E3l2i/Screen%20Shot%202012-06-29%20at%2002.06.32.png

xcode objective-c scroller nsscrollview

6
推荐指数
2
解决办法
5487
查看次数

NSStatusItem 应用焦点

我的菜单栏应用程序如何实现与 1Password 或 Dropbox 相同的行为:

  • 单击他们的菜单栏图标或弹出框不会窃取焦点,例如,当我在 TextEdit 中并打开 1Password/Dropbox 时,闪烁的光标消失但窗口本身不会进入背景,但我可以输入 1Password 的文本字段。
  • 即使它们一开始没有引起注意,当我单击回另一个应用程序时它们就会消失

我通过使用带有 MouseEnteredAndExited、AssumeInside 和 ActiveAlways 选项的 NSTrackingArea,弄清楚了鼠标悬停在 Dropbox 弹出窗口表格视图中的工作原理。

我试图让相同的行为在从 NSStatusItem 打开的 NSPopover 中工作。

macos xcode nsstatusitem nspopover

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

单击显示NSUserNotification additionalActions

additionalActions

在上图中,您可以在OS X上看到两个通知.第一个来自我的应用程序,第二个来自Apple的Reminders.app.在图像中,您可以看到otherButtonTitle"完成"和actionButtonTitle"稍后".

第二个通知,即来自Reminders.app的通知,表现完全不同.它会使鼠标指向下方的这个小箭头指示单击时有更多操作.事实上,你只需要点击一次在"后来",它会给你一对夫妇更多可供选择的方案.

但是,我无法使用相同的行为来处理我的通知.鼠标悬停时我没有得到小箭头,只需点击"稍后"即可显示更多选项(通知只是被解雇).只有在"稍后"按住鼠标按钮时才会显示更多选项,这一点并不明显.

我错过了一些明显的东西吗?如何让我的通知与Reminders.app中的通知完全相同?

macos cocoa nsusernotification nsusernotificationcenter

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

设置UILabel文本时使用UIPanGestureRecognizer进行翻译

我在将UILabel的文本设置为手势速度时,仅使用UIPanGestureRecognizer转换视图时遇到问题。

我已经成功地用这样的平移手势转换了视图(在IB的帮助下):

- (IBAction)handleGesture:(UIPanGestureRecognizer *)sender

{   
    CGPoint translation = [sender translationInView:self.view];

    sender.view.center = CGPointMake(sender.view.center.x + translation.x, sender.view.center.y + translation.y);

    [sender setTranslation:CGPointMake(0, 0) inView:self.view];
} 
Run Code Online (Sandbox Code Playgroud)

但是,当我在此方法中添加以下行时,视图停止平移,但UILabel随速度更新:

self.myLabel.text = [NSString stringWithFormat:@"%@", [NSNumber numberWithInt:[sender velocityInView:self.roundShape].y]];
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

objective-c uilabel uipangesturerecognizer

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