我是编程和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) 我最近发现了一些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)
这有两个问题:
animateKeyframesWithDuration:delay:options:animations:completion:你应该调用addKeyframeWithRelativeStartTime:relativeDuration:animations:动画块内的方法.如果不调用此方法,则此方法的行为类似于标准UIView动画块.在Xcode 6中,XLIFF文件格式现在用于字符串的本地化.但是,我需要本地化复数和性别.我怎么能在Xcode 6中做到这一点?
据我所知,XLIFF文件现在替换了Localizable.strings文件.在iOS 7/OS X 10.9中,我们可以通过添加Localizable来本地化复数和性别.stringsdict但这需要Localizable.strings存在.但是由于现在没有Localisable.strings文件,我如何才能使Localizable.stringsdict文件起作用?
我一直在寻找一个解决方案,使我的NSTextField底部对齐,我发现了这个,并根据我的需要进行了调整.所以现在我有了这个自定义的NSTextFieldCell但是如何告诉我的NSTextFields使用这个类(以编程方式)?
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
我的菜单栏应用程序如何实现与 1Password 或 Dropbox 相同的行为:
我通过使用带有 MouseEnteredAndExited、AssumeInside 和 ActiveAlways 选项的 NSTrackingArea,弄清楚了鼠标悬停在 Dropbox 弹出窗口表格视图中的工作原理。
我试图让相同的行为在从 NSStatusItem 打开的 NSPopover 中工作。
在上图中,您可以在OS X上看到两个通知.第一个来自我的应用程序,第二个来自Apple的Reminders.app.在图像中,您可以看到otherButtonTitle"完成"和actionButtonTitle"稍后".
第二个通知,即来自Reminders.app的通知,表现完全不同.它会使鼠标指向下方的这个小箭头指示单击时有更多操作.事实上,你只需要点击一次在"后来",它会给你一对夫妇更多可供选择的方案.
但是,我无法使用相同的行为来处理我的通知.鼠标悬停时我没有得到小箭头,只需点击"稍后"即可显示更多选项(通知只是被解雇).只有在"稍后"按住鼠标按钮时才会显示更多选项,这一点并不明显.
我错过了一些明显的东西吗?如何让我的通知与Reminders.app中的通知完全相同?
我在将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 ×5
macos ×2
xcode ×2
cocoa ×1
ios5 ×1
ios7 ×1
ipad ×1
iphone ×1
localization ×1
nspopover ×1
nsscrollview ×1
nsstatusitem ×1
nstextfield ×1
scroller ×1
uilabel ×1
uiview ×1
xcode6 ×1
xliff ×1