首页 文章 精选 留言 我的

精选列表

搜索[编写],共10000篇文章
优秀的个人博客,低调大师

iOS-《编写高质量代码》笔记-第五章 实现

建议33:使用类别把类的实现拆分成不同的文件 类别可以访问其继承的类的实例变量,类别的方法具有最高的优先级类别,可以分散到不同的文件中,甚至不同的框架中。 1.利用类别机制,可将同一个类的实现,由一个常规的实现文件.m拆分成多个实现文件.m。 2.把同一个类的实现文件.m拆分成多个实现文件.m,适合类的实现文件大多比较庞大,拆分的标准多是以同类型或同业务来作为参照。 建议34:明智地使用内省可使程序更加高效和健壮 内省是对象揭示自己作为一个运行时对象的详细信息的一种能力。这些详细信息包括对象在继承树上的位置、对象是否遵循特定的协议,以及是否可以响应特定的消息。 建议35:尽量使用不可变性对象而非可变性对象 对象的不可变性可以保证对象在使用时不会被意外的改变。 1.尽量不要把可变对象存储到集合对象中,否则容易导致存储的可变对象被破坏或变成无效。 2.在开销上,可变对象比不可变对象要大,因为可变对象必须动态管理一个可变的辅助存储---在必要的时分配或解除分配内存块,所以比相应的不可变版本效率低。 3.不能确定对象是否可变,则将它当成不可变处理。 建议36:利用复合能巧妙地把两个类或两个对象融合 在OOP编程中有两个技术用于描述类与类或对象与对象之间的关系:一个是继承,另一个是复合。 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。 复合:通过在类中声明一个指向另一个类对象的指针作为实例变量,从而将这两个类进行复合。 在OC中所有对象之间的交互都是通过指针实现的。 建议37:使用类扩展来隐藏实现的细节 类扩展(Extension)作用: 1.能为某个类附加额外的属性、成员变量、方法声明 2.一般的类扩展写到.m文件中 3.一般的私有属性写到类扩展中 建议38:使用内联块应注意避免循环引用 内联:在类内定义的函数被默认成内联函数 块:block 引进弱引用来避免在内联块中直接引用self导致的循环引用。 建议39:利用类别把方法添加到现有的类 类别可以用于声明实例方法或类方法,但通常不适合用类别来声明额外的属性。在类别接口中包括一个属性声明的语法是有效的。但是不能在类别中声明一个额外的实例变量。这意味着,编译器不会合成任何实例变量,也不会将它合成任何属性访问器方法。 建议40:通过强弱引用来管理对象的所有权 http://www.jianshu.com/p/4a1d1921284b

优秀的个人博客,低调大师

解决Sublime Text 3编写CSS输入分号时自动提示的问题

自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onLayout源码详尽分析 自定义View系列教程04–Draw源码分析及其实践 自定义View系列教程05–示例分析 自定义View系列教程06–详解View的Touch事件处理 自定义View系列教程07–详解ViewGroup分发Touch事件 自定义View系列教程08–滑动冲突的产生及其处理 探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 详解Android主流框架不可或缺的基石 站在源码的肩膀上全解Scroller工作机制 Android多分辨率适配框架(1)— 核心基础 Android多分辨率适配框架(2)— 原理剖析 Android多分辨率适配框架(3)— 使用指南 版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 问题描述 在用Sublime Text 3写CSS代码时遇到一个问题:当写完一行代码输入分号时会自动莫名其妙地弹出来一个代码提示框,如下图所示: 在这折腾了好一阵子,好在最终解决了。故,记录如下。 解决方案 解决方式及其步骤请参见如下方案。 第一步 打开Preferences -> Package Settings -> SublimeCodeIntel -> Key Bindings - User 此时,您看到如下配置: [ { "keys": [ "tab" ], "args": { "action": "expand_abbreviation" }, "command": "run_emmet_action", "context": [ { "key": "emmet_action_enabled.expand_abbreviation" }] } 将其修改为如下所示: [ { "keys": [ "tab" ], "args": { "action": "expand_abbreviation" }, "command": "run_emmet_action", "context": [ { "key": "emmet_action_enabled.expand_abbreviation" }] }, { "keys": [";"], "command": "run_macro_file", "args": { "file": "Packages/User/lfdfhl.sublime-macro" } }] 第二步 打开Preferences -> Browser Packages -> Users 在该目录下新建文件lfdfhl.sublime-macro 第三步 在lfdfhl.sublime-macro文件中保存如下内容: [ { "args": { "characters": ";" }, "command": "insert" } ] 第四步 重启Sublime Text 3

优秀的个人博客,低调大师

基于.Net 6 编写的物联网平台 IoTSharp v2.1 已发布

IoTSharp 经过2021年的发展, 我们终于有了前端部分, 已经初具生产使用能力, 从规则链、数据清洗脚本支持等等, 设备控制、事件等皆有了完善和支持。 2021年11月是个不平凡的月份。 使得项目有了快速的成长。 于此同时我们也收到了首次捐赠. 同时我们也终于升级到了.Net 6.0 , 由于我们依赖的库实在太多, 推动依赖库更新升级是一个艰巨的任务。 更新内容如下 升级到了 .Net 6.0 调整 rpc 接口和通过网关控制子设备 增加挂载点 rpc , 上线, 下线, 可以在挂载点处挂载规则链。 增加Mysql迁移文件 修改docker镜像名字为 maikebing/iotsharp ,因为 iotsharp/iotsharp 需要单独缴费。 解决单例注入后,DbConext不能用于多线程问题 by@lablein#538 修复pgsql迁移设计 by@lablein#539 修正IPV6特殊处理 ::1 by@lablein#541

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册