小编Ala*_*lan的帖子

iOS头文件中的属性和变量之间的区别?

可能重复:
Objective-c中的"实例变量"和"属性"之间是否存在差异?
self.ivar和ivar之间的区别?

在@interface行之后立即在括号中声明变量和在下面定义属性之间有什么区别?

例如...

@interface GCTurnBasedMatchHelper : NSObject {
BOOL gameCenterAvailable;
BOOL userAuthenticated;
}

@property (assign, readonly) BOOL gameCenterAvailable;
Run Code Online (Sandbox Code Playgroud)

objective-c ios

23
推荐指数
2
解决办法
2万
查看次数

如何检查CGPoint是否已初始化?

我想最初将CGPoint属性设置为特定点(屏幕中间).其他方法可能随后希望更改此属性.我的想法是在getter中将其初始化为空,但是我得到消息无效的参数类型'struct CGPoint'到一元表达式.我也试过使用if property == nil或0但没有快乐.

有什么想法吗?

-(CGPoint)graphOrigin
{
    // initialise to centre of screen if has not been set
    if(!_graphOrigin) // this expression is causing the problem
    {
        CGPoint origin = CGPointMake(self.bounds.origin.x + self.bounds.size.width / 2, self.bounds.origin.y + self.bounds.size.height / 2);

        _graphOrigin = origin;
    }

return _graphOrigin;
Run Code Online (Sandbox Code Playgroud)

}

objective-c

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

MPMoviePlayerController模拟器崩溃

当我尝试播放任何视频时,我的MPMoviePlayerController崩溃了.

这只发生在模拟器上,在设备上正常工作.

错误如下:

2012-10-25 16:46:24.033 TheFasterChef[8529:14303] [MPAVController] Autoplay: Disabling autoplay for pause
2012-10-25 16:46:24.035 TheFasterChef[8529:14303] [MPAVController] Autoplay: Disabling autoplay
2012-10-25 16:46:24.172 TheFasterChef[8529:14303] [MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 1, on player: 0)
2012-10-25 16:46:24.190 TheFasterChef[8529:14303] [MPAVController] Autoplay: Enabling autoplay
2012-10-25 16:46:24.227 TheFasterChef[8529:14303] [MPAVController] Autoplay: Likely to keep up or full buffer: 0
2012-10-25 16:46:24.227 TheFasterChef[8529:14303] [MPAVController] Autoplay: Skipping autoplay, not enough buffered to keep up.
2012-10-25 16:46:24.232 TheFasterChef[8529:14303] [MPAVController] Autoplay: Enabling autoplay
2012-10-25 16:46:24.238 TheFasterChef[8529:14303] [MPCloudAssetDownloadController] Prioritization requested …
Run Code Online (Sandbox Code Playgroud)

xcode mpmovieplayercontroller ios ios-simulator

15
推荐指数
2
解决办法
4889
查看次数

如何使用块为整个应用程序共享的每个磁盘文件创建一个全局UIManagedDocument实例?

我试图设计一个帮助方法,它将检索UIManagedDocument,然后打开并返回它,以便我可以从我的应用程序中的几个地方访问相同的UIManagedDocument.

由于我对块不太熟悉,因此我遇到了异步性问题.理想情况下,事件的顺序是这样的:

  1. 类X调用helper方法来检索UIManagedDocument,并包含一个在返回打开的文档时运行的代码块.
  2. 类方法检索UIManagedDocument并根据需要调用openWithCompletionHandler或saveToURL,并包含在返回打开的文档时运行的代码块.
  3. openwithCompletionHandler或saveToURL完成他们的任务,并返回成功= YES并在其块中运行代码
  4. 类方法完成其任务并返回一个打开的UIManagedDocument并在其块中运行代码

我可以通过某种方式传递原始块吗?

到目前为止,这是我的代码.任何想法都非常感谢,谢谢.

// This is a dictionary where the keys are "Vacations" and the objects are URLs to UIManagedDocuments
static NSMutableDictionary *managedDocumentDictionary = nil;

// This typedef has been defined in .h file: 
// typedef void (^completion_block_t)(UIManagedDocument *vacation);
// The idea is that this class method will run the block when its UIManagedObject has opened

@implementation MyVacationsHelper

+ (void)openVacation:(NSString *)vacationName usingBlock:(completion_block_t)completionBlock
{
    // Try to retrieve the relevant UIManagedDocument from managedDocumentDictionary
    UIManagedDocument *doc …
Run Code Online (Sandbox Code Playgroud)

iphone block objective-c cs193p ios

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

傻瓜的协议和代表

我试图解决这个问题,我保证!这里有大量的信息,我仍然充斥着抽象概念的海洋!就像我小时候一样,没有人可以向我解释为什么一个国家不能只打印更多的钱并且真的很富裕.我不是因为大部分这些东西都迟钝了,但由于某种原因我无法绕过这个概念,所以如果有人可以把它拼写为"尽可能慢地和一个4岁的孩子说话",我会非常感激. !

我认为目标行动对我来说是完全合理的.这是一种允许视图与控制器通信的有用方法,而不必做很多事情.据我所知,控制器对象有效地将侦听器附加到视图对象,以便如果在该视图上发生特定事件(即按钮被按下),则它会触发控制器方法.这可能不是技术上的准确,但作为一个抽象的解释,它对我来说是有道理的.

所以顺序是:

  1. 在控制器对象中创建目标方法.
  2. 选择视图并以图形方式连接到该方法.
  3. 事件发生在该视图上,该事件从控制器触发该方法.

议定书和代表让我感到沮丧.我知道它与允许对象相互交谈有关,但我尝试写下目前为止我的(缺乏)理解并删除它,因为我认为最好不要解开我当前思路中的结,而只是擦拭板岩并重新开始.如果有人可以花一点时间来解释目的

  1. 使用委托/协议而不是目标/行动
  2. 代码的组成部分及其所在的位置
  3. 使用该过程时发生的事件序列

我会永远感激.

从对其他解释的一些评论来看,我觉得我不是唯一一个有点失落的人,所以希望这将是一般用途.非常感谢!

编辑:

好吧,我想如果我只是理解我的理解,人们可以纠正我,这可能会使这更容易.

我的示例来自Apple Docs,其中Window作为视图对象,WindowDelegate作为委托,单击关闭窗口按钮会触发"我应该关闭吗?" 给代表的消息.

代码的组成部分:Window(View)WindowDelegate(View Controller?)

  1. 声明委托可以在Window(View)的接口部分中使用的协议.
  2. 在窗口中创建委托的实例.
  3. 说明WindowDelegate通过在其界面中包含:来实现Window Protocol.(这里有点摇摇晃晃?)
  4. 在WindowDelegate(View Controller)实现部分中编写方法的必要实现.
  5. 在某个事件中,Window将使用某些信息向WindowDelegate发送消息.
  6. WindowDelegate将处理此问题并返回答案.

沿着右边的任何地方?

delegates design-patterns protocols objective-c

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

阻止代码完成

在下面的场景中,似乎不可能使用tab键自动填充块的参数,而是你必须完全写出来,这有点痛苦.

有更简单的方法吗?

Code Snipper

xcode block ios

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

使用UINavigationController进行iOS7自定义转换

我使用iOS7自定义过渡以模态方式呈现新的视图控制器.

新的视图控制器是导航控制器.

控制器从底部开始动画,而背景视图模糊.

我的问题是,新控制器上的导航栏虽然向上动画,但似乎允许状态栏,即它似乎高64点.当它到达最终位置并调用completeTransition时,它意识到不需要状态栏空间并快速回到44点.

有办法吗?

  • 最初通知导航控制器/顶视图控制器不需要状态栏.要么
  • 在动画之前调用completeTransition正在调用的任何方法,以便随后进行自动重新调整.

动画制作时:

动画时

动画完成:

动画完成

uinavigationcontroller ios uistatusbar ios7

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

React Hooks只能在功能组件的主体内部调用

如何useEffect()在单击按钮时触发,而不是在渲染组件时触发?

当我在这样的函数中使用它时,出现错误说明:

挂钩只能在功能组件的主体内部调用

function App() {

  function buttonClicked() {  
    useEffect(() => {
      // Fetch from API
    });
  }

  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <h1 className="App-title">App Title</h1>
      </header>
      <p className="App-intro">
        To get started, edit <code>src/App.js</code> and save to reload.
      </p>
      <button onClick={buttonClicked}>Make API Call</button>
    </div>
  );
}
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-hooks

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