cocoa开发Mac小试笔记
急需纠正自己的错误认识,Mac开发和iOS开发UI显示、事件交互、生命周期等存在极大的差距
首先点击事件NSButton和UIButton完全是两个不同的东西
列表UITableView和NSTableView也是神似而已
最终点击事件选择的是继承NSView重写了MouseDown方法
@interface MouseDownActionButton : NSView @property(nonatomic,copy)void (^responseForMouseDown)(void); @end @implementation MouseDownActionButton -(void)mouseDown:(NSEvent *)event
{
if(self.responseForMouseDown)
{
self.responseForMouseDown();
}
} @end
读取文件分成两种情况,一种是开启了App沙盒(一般只能访问沙盒目录下文件),一种是没有开启App沙盒(可直接访问大部分文件)

沙盒模式下选取文件操作
-(void)letUserMakeFileChoose
{
NSOpenPanel *openPanel = [NSOpenPanel openPanel];
[openPanel setPrompt: @"打开"];
openPanel.allowsMultipleSelection = YES;
openPanel.allowedFileTypes = @[@"mp4"];
openPanel.directoryURL = [NSURL fileURLWithPath:@"/Users/admin/Documents/xxxxx"];
_videoItemArray = [NSMutableArray array];
typeof(self) __weak weakself = self;
[openPanel beginSheetModalForWindow:self.view.window completionHandler:^(NSModalResponse returnCode) { if (returnCode == ) {
typeof(weakself) __strong strongself = weakself;
[strongself.videoItemArray addObjectsFromArray:[openPanel URLs]];
if (strongself.videoItemArray.count > ) {
[strongself.view setNeedsLayout:YES];
}
}
}];
}
沙盒模式下,这里的文件在APP生命周期内拥有访问权限,重新启动APP将会失去访问权限,当然关闭沙盒之后就没有这个影响了
播放操作时,需要执行 [self.view setNeedsLayout:YES] 也就是重新布局播放层所在视图否则在下一次布局前无法显示出播放视图
#import "AppCommonSetting.h"
int main(int argc, const char * argv[]) {
    if (argc > ) {
        if (argv[][] == '') {
            [AppCommonSetting shareSetting].shouldReChoose = YES;
        }
    }
    return NSApplicationMain(argc, argv);
}
Main函数和iOS的差别也很大,在这里没有显式传入Delegate,在这里是创建了一个单例来存储命令行调用时的参数
这里命令行调用时不是执行的.app而是app包里面MacOS文件夹下的可执行命令行文件
最终是
cocoa开发Mac小试笔记的更多相关文章
- iPhone与iPad开发实战读书笔记
		
iPhone开发一些读书笔记 手机应用分类1.教育工具2.生活工具3.社交应用4.定位工具5.游戏6.报纸和杂志的阅读器7.移动办公应用8.财经工具9.手机购物应用10.风景区相关应用11.旅游相关的 ...
 - 马上着手开发Mac应用程序
		
你是否想要开发 Mac 应用程序却又不知道从哪里入手?本路线图提供了 Mac 应用程序开发的绝佳起点,即使你已经是一个 iOS 开发专家,本路线图对你依然适用.Apple让开发应用程序和提交应用程序到 ...
 - 转:【iOS开发每日小笔记(十一)】iOS8更新留下的“坑” NSAttributedString设置下划线 NSUnderlineStyleAttributeName 属性必须为NSNumber
		
http://www.bubuko.com/infodetail-382485.html 标签:des class style 代码 html 使用 问题 文件 数据 ...
 - 第一章 Andorid系统移植与驱动开发概述 - 读书笔记
		
Android驱动月考1 第一章 Andorid系统移植与驱动开发概述 - 读书笔记 1.Android系统的架构: (1)Linux内核,Android是基于Linux内核的操作系统,并且开源,所以 ...
 - Android开发艺术探索笔记——View(二)
		
Android开发艺术探索笔记--View(二) View的事件分发机制 学习资料: 1.Understanding Android Input Touch Events System Framewo ...
 - Android开发艺术探索笔记—— View(一)
		
Android开发艺术探索笔记 --View(一) View的基础知识 什么是View View是Android中所有控件的基类.是一种界面层控件的抽象. View的位置参数 参数名 获取方式 含义 ...
 - UWP开发入门系列笔记之(一):UWP初览
		
标签: 随着微软Build2015带来的好消息,Win10正式版发布的日子已经离我们越来越近了,我们也终于欣喜地看到:一个统一的Windows平台对于开发人员来说充满了吸引力,这局棋下的好大的说--于 ...
 - 《PHP与MySQL WEB开发》读书笔记
		
<PHP与MySQL WEB开发>读书笔记 作者:[美]Luke Welling PHP输出的HereDoc语法: echo <<<theEnd line 1 line ...
 - Android开发艺术探索笔记——第一章:Activity的生命周期和启动模式
		
Android开发艺术探索笔记--第一章:Activity的生命周期和启动模式 怀着无比崇敬的心情翻开了这本书,路漫漫其修远兮,程序人生,为自己加油! 一.序 作为这本书的第一章,主席还是把Activ ...
 
随机推荐
- sed 简明教程 (转)
			
sed 简明教程 2013年2月20日 awk于1977年出生,今年36岁本命年,sed比awk大2-3岁,awk就像林妹妹,sed就是宝玉哥哥了.所以 林妹妹跳了个Topless,他的哥哥sed ...
 - Effective Java 第三版——61. 基本类型优于装箱的基本类型
			
Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...
 - linux 下的emoji在MariaDB中的字符集修改
			
在此目录下修改这个文件: 添加一行字符集: 然后重启服务,就OK了
 - 从NSTimer的失效性谈起(二):关于GCD Timer和libdispatch
			
一.GCD Timer的创建和安放 尽管GCD Timer并不依赖于NSRunLoop,可是有没有可能在某种情况下,GCD Timer也失效了?就好比一開始我们也不知道NSTimer相应着一个runl ...
 - 微信小程序-开心大转盘(圆盘指针)代码分析
			
大转盘是比较常见的抽奖活动 .以前做过h5的大转盘,最近小程序比较火,客户要求做小程序的大转盘.我们就来分析下代码.先上几个图: 界面效果还是很不错的. 做界面还是比较容易的,只要有前端基础没 ...
 - 3. RNN神经网络-LSTM模型结构
			
1. RNN神经网络模型原理 2. RNN神经网络模型的不同结构 3. RNN神经网络-LSTM模型结构 1. 前言 之前我们对RNN模型做了总结.由于RNN也有梯度消失的问题,因此很难处理长序列的数 ...
 - C++ 重载(overload)、重写(overrride)、重定义(redefine)总结
			
引自:http://www.189works.com/article-42111-1.html 先来看几个概念: 重载(overload),重写(override,也称覆盖), 重定义(redefin ...
 - cbow与skip-gram
			
场景:上次回答word2vec相关的问题,回答的是先验概率和后验概率,没有回答到关键点. 词袋模型(Bag of Words, BOW)与词向量(Word Embedding)模型 词袋模型就是将句子 ...
 - 微信mac版的bug 直接显示了消息原始数据
			
<msg> <voicemsg endflag="1" cancelflag="0" forwardflag="0" vo ...
 - Oracle分析函数-排序排列(rank、dense_rank、row_number、ntile)
			
(1)rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名. (2)dense_rank函数返回一个唯一的值, ...