MacOS开发
记录在mac开发过程中遇到的问题和使用的技术,同时会讲解Object C语言方面的知识
Zhongyi_Li
这个作者很懒,什么都没留下…
展开
-
iOS与JS交互的4中方法
iOS与JS交互的4中方法原创 2021-08-13 10:41:31 · 363 阅读 · 0 评论 -
Proxy和的delegate区别
在ios中使用proxy代理模式,经常容易和delegate委托模式混淆。委托模式(delegate),是简单的强大的模式,可让一个对象扮演另外对象的行为。委托对象保持到另外对象的引用,并在适当的时候发消息给另外对象。委托对象可以在发送消息的时候做一些额外的事情 (可以理解为委派的关系)。委托只是引用被委托对象代理模式 (proxy),代理模式一般要更严格,若干对象实现一个共同的接口。对应的是设计模式的代理模式...转载 2020-09-17 15:03:46 · 1328 阅读 · 0 评论 -
Object C之self和super理解
对于self和super的学习和理解,大家可以看参考中的文章,通过学习这几篇文章就能即便了解。在这里我想说一些和java比较,自己的一些理解。从大方向来说OC中的self、super和java中的this、super是类似的概念,但它们也是有不同的。在java中我们可以new一个对象,其实new做了很多工作,至少有分配内存空间和根据规则调用构造器,看这篇文章实例化一个对象的过程,从语言语法上,我们是感知不到内存分配这步的。而在OC语言中语法上是能感知的内存分配的,alloc方法,new方法也是对all原创 2020-08-14 15:30:58 · 199 阅读 · 0 评论 -
macOS拖拽文件完美解决方案,兼容各个版本
#import <Cocoa/Cocoa.h>NS_ASSUME_NONNULL_BEGIN@protocol SHReadFileViewDelegate <NSObject>- (void)receivedFileUrlList:(NSArray<NSURL *> *)fileUrls;- (NSDragOperation)quaryDragOperation:(NSArray *)list;@end@interface SHReadFileV.原创 2020-08-11 10:06:10 · 1854 阅读 · 0 评论 -
OC中常量的定义
Object C语言是在C语言的基础上实现了面向对象,是C语言的延伸,所以C语言中的一些语法在OC中也是可以使用的,比如常量的定义。iOS Objecttive-C语言 定义常量的几种方式与区别 static const 定义常量 少用#define预处理指令 多用类型常量C语言extern关键字用法和理解...原创 2020-08-06 10:41:59 · 1107 阅读 · 0 评论 -
Object C中id类型和NSObject类型的理解
NSObject类型可以类比于java中的Object类,是所有类的基类。NSObject有一个Class类型的isa字段,Class表示的是struct objc_class *类型,isa表示的是对象所属的类型。需要说明的是object_class结构体中只有一个Class类型的isa,看到这里迷惑了,也就是说object_class中一个指向object_class类型的变量isa。我尝试去理解一下,首先NSObject表示的是一个类类型,这个类类型加载到内存怎么表示呢?我理解就是一个object原创 2020-08-04 17:43:57 · 741 阅读 · 0 评论 -
Mac NSDictionary 和Java HashMap比较
这两个在实际开发中,都是用于存放key-value值的,所以放一块记录一下。NSDictionay是不可变的,具体用法看参考,在java中好像没有这种数据结构,至少我在开发中没用过。NSDictionay也是可以用泛型的,可是好像很少有人这样用,导致NSDictionary中存了的数据类型都不确定,这个给后续取数据的时候,带来了类型出错的风险。可以理解为NSDictionary中key和value都是id类型的,id类型可以理解成是NSObject,和java中的Object类是一个意思。所以,从NSD原创 2020-06-15 17:11:10 · 475 阅读 · 0 评论 -
Mac OS鼠标事件监听
Mac OS鼠标事件监听简述例子简述NSView要想能监听鼠标事件需要给view添加追踪区域,一般是在NSView的模板方法updateTrackingAreas中设置。例子#import "CustomSlider.h"#import "CustomSliderCell.h"@interface CustomSlider()@property (nonatomic, strong) NSTrackingArea *trackingArea;@end@implementation原创 2020-06-02 11:28:04 · 2384 阅读 · 1 评论 -
Object C 循环引用问题
在Object C循环引用是大问题,稍微不注意就会出现循环引用导致泄露,尤其是使用Block的时候 __weakObj(commonH5PagePanel) [commonH5PagePanel.jsBridge registerMethod:@"common_HN_changeFrmSize" handler:^(NSDictionary *ps, SHJSBridgeSendResponse callback) { int width = [(原创 2020-05-19 18:45:22 · 573 阅读 · 0 评论 -
Android Gradle 和Ios CocoaPods
Gradle是一个自动化构建工具(build system),构建能做的事很多,除了包括包依赖管理(dependency management),还有编译源码、测试、发布和部署。而CocosPods只是一个包依赖管理工具。所以,两者是概念上不同的两个工具。Gradle是可以和Maven,Ant一块比较的,它们都是自动化构建工具,不过Ant基本被抛弃了,Maven是标准构建工具,不过不够灵活,G...原创 2020-03-25 13:50:07 · 1259 阅读 · 0 评论 -
Mac 开发之NSTableView
1、NSTableView 修改选中行背景颜色,这个问题花了我几个小时,最后发现很简单,都是被好多文章误导了。MAC开发--自定义NSTableView选中行背景这个文章,第一种方法写的乱七八糟,都不知道要怎么做。第二种方法,有弊病,就是周围是一圈蓝色macOS开发之NSTableView的应用详解主要还是看这篇文章解决了2、行的单击MacOS 开发 - NSTable...原创 2020-03-20 11:15:46 · 540 阅读 · 0 评论 -
Java监听器和Object C协议代理
先不管什么语言,我们先想象一种编程场景,A类中创建了一个B对象,A和B之间要怎么通信呢?A要主动和B通信没有问题,因为B是在A中创建的,A自然拥有B的引用,能知道B的可用的方法,调用B的方法,就可以和B通信了。可是B要怎么和A通信呢?那么B也要有A的引用,调用A的方法通信。这种通信方式,如果A和B都是自己写的代码,这样没有问题。可是,B是一个库代码,将来可以给别人用,A和B通信没问题,因为,你...原创 2020-03-19 08:26:07 · 175 阅读 · 0 评论 -
Mac 之动画
1、自旋转动画- (void)showRotateAnimation:(NSImageView *)imageView { CABasicAnimation *anim2 = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; anim2.timingFunction = [CAMediaTimingF...原创 2020-03-15 10:07:41 · 371 阅读 · 0 评论 -
Mac WindowController的使用
WindowController的使用网上有很多教程不细说,不过使用过程中还是有些坑的WindowController在使用的时候,实例化出来后,要有个活着的对象引用它,要不然执行完方法,WindowController实例也销毁了,也展示不出来,一般情况是让全局的AppDelegate持有引用,关闭的时候置nil。对于ViewController应该不存在上述的问题。...原创 2020-03-13 15:56:20 · 246 阅读 · 0 评论 -
Mac xib布局问题记录
在xib中我们在ViewController中用约束来布局,一般是点击下图的按钮操作就可以了不过遇到一个奇怪的问题,ViewController的根View,是NSView,我们给这个根view设置一个子view也是NSView(B)。这B View通过上面方式约束就不行,add Constrainsts 操作不了。这个时候,我们可以这样操作,下面两个地方设置也能达到同样的目的...原创 2020-03-13 14:27:07 · 238 阅读 · 0 评论 -
Android和ios调用C/C++使用
Android平台是可以通过NDK和jni来实现调用C/C++的目的的。jni是java本身就有的技术,NDK是android对jni的支持。使用起来也简单,具体可以看下面两篇文章深入理解Android-JNI的理解Android JNI:深入分析安卓JNI原理基本思想就是java中的方法通过jni层和native层的方法进行映射,jni层其实也是C代码。在jni层,JavaVm是虚拟...原创 2020-03-09 18:24:28 · 780 阅读 · 0 评论 -
mac cocoapods 更新
cocospod 更新到指定版本及其问题brew、gem、npm介绍原创 2019-11-15 14:02:53 · 1412 阅读 · 0 评论 -
Object C中为什么有头文件的概念?为啥java中没有呢?(C、java、python导入的区别)
OC是在C语言理念上开发的,添加了面向对象的概念,所以头文件的概念是从C语言过来的,那我们看看为啥C语言中要有头文件的概念的。下面这篇文章没有太看明白,大致的意思是,编译的时候需要知道所有的函数定义并不需要实现,所以就单独提出来一个头文件进行说明为什么C语言会有头文件我们说一下java中的import和C 中的#include有什么区别?感觉使用上是一个东西,其实理念不同,完全不一...原创 2019-07-01 16:17:53 · 852 阅读 · 0 评论 -
android和ios的静态库和动态库理解
在Android说说到静态库和动态库,一般说的都是C/C++代码,我们知道在android中是通过jni技术访问到C代码的,我们会把C/C++打包成so文件,这个就是动态库(共享库)。如果我们想要使用的C库是.a形式的静态库时,我们要把.a包装成so库,具体网上有方法。个人感觉在java语言中讨论静态库和动态库就是个伪概念,java是的编译结果是字节码文件,不是二进制文件,而且没有链接的过程,...原创 2019-06-26 17:26:39 · 2074 阅读 · 0 评论 -
什么叫linux操作系统?这个叫法本身是错误的
linux其实只是一个内核,操作系统的中的绝大多少软件都是GNU提供的。Linux和GNU系统百度百科gcc GNU compiler collection gnu编译套件原创 2019-06-26 16:30:40 · 148 阅读 · 0 评论 -
Object C和java单例实现比较
在java中,我们一般如下实现单例public class SingletonClass { private static SingletonClass _instance; private SingletonClass() { } public static SingletonClass getInstance() { //懒加载 ...原创 2019-05-28 17:55:59 · 128 阅读 · 0 评论 -
Mac OS 判断网络连接状态-10.10的系统
mac app和ios 判断网络连接状态差不多,具体可以参考下面的帖子https://www.cnblogs.com/wuqh-iOS/p/4720525.html在这里需要强调的是,在10.10的系统上不能认为只要有kSCNetworkReachabilityFlagsReachable状态就认为有网,这是不对的。经测试在10.10的系统上断网后,通过SCNetworkReachab...原创 2019-05-28 12:48:25 · 1209 阅读 · 0 评论 -
appdmg安装
首先,什么是appdmg?Generate beautiful DMG-images for your OS X applications.是为mac os app生成漂亮dmg 图片的工具,我是mac app开发初学者,其实这句话的含义没有太理解,只知道是打包的时候用的。https://github.com/LinusU/node-appdmgappdmg是nodejs平台上的一...原创 2019-05-23 13:43:09 · 1726 阅读 · 0 评论 -
OC特殊语法
[items addObject:({ SHLocalPlayItem *item = [[SHLocalPlayItem alloc]init]; item.bookMark = bookMark; ;item; })];这个语法,item前面的分...原创 2019-04-26 15:43:33 · 389 阅读 · 0 评论 -
Object C 和java比较
1、获取实例对象的不同在Java中获取一个类实例:类名 instance = new 类构造方法()。这样我们有拥有了一个类的实例,在类中定义的变量,可以在定义的时候进行初始化,也可以在构造方法中初始化。在OC中获取一个类实例:类名 *instance = [[类名 alloc] init]。在oc中,获得类实例需要两步,alloc分配内存,init初始化内存,而且变量的初始化只能在ini...原创 2019-04-16 15:09:55 · 2032 阅读 · 0 评论 -
mac(object c)开发入门
在上一篇文章中,介绍了object C的一些语法,这边文章介绍一些mac具体开发的工程相关和控件库使用。一步一步,开始上手Mac 开发(一)一步一步,开始上手Mac 开发(二)OC #import和@class的用法和区别Layer对象的设置Object-C--浅谈Category分类透彻理解 NSNotificationCenter 通知(附实现代码)Objec...原创 2019-03-30 16:34:51 · 1841 阅读 · 0 评论 -
mac 中的一些工具
每个工具都有其使用的场景(1)brew mac中的包管理工具Mac 必备工具之 brew在使用brew会报如下的错:Running Homebrew as root is extremely dangerous and no longer supported. As Homebrew does not drop privileges on installation you woul...原创 2019-09-10 11:03:06 · 502 阅读 · 0 评论 -
Android程序员转Object C入门
我一直是搞Android开发的,期间也做过一段时间cocos游戏开发和微信小程序,不过主要还是做Android开发的。今年由于项目需要,需要做mac开发,那就学习一下object c呗。我感觉编程思想是一样的,只不过是语法不一样而已,学了两天,感觉还是java语法简单和纯粹。做ios开发的同事,总结了一些需要学习了解的概念和语法:类方法,实例方法,属性(难点和重点)字符串 NSStrin...原创 2019-03-23 17:00:44 · 482 阅读 · 0 评论 -
object c 内存泄露
虽然Xcode4.2引入了ARC “自动引用计数”管理内存,但是依旧不够智能,远没有java的GC强大,在Java中A对象持有B对象,B对象持有A对象,只要这两个对象没被其他对象持有,A和B都会被释放。但是在object C中却不是这样,因为引用计数,互相持有,计数不为0,不行释放。说一下,我在mac开发中遇到的问题吧。有个A对象,里面有个B对象,A对象用完后释放了,释放会走dealloc...原创 2019-09-27 11:03:05 · 191 阅读 · 0 评论