DM Blog

Thinking will not overcome fear but action will.

ios 越狱检测相关原理

iOS技术成长之路

背景: ios 应用包 ipa 文件如果被攻击者通过越狱手段反向编译或者砸壳之后,再通过反向编译是可以看到部分源代码的,操作更高的可以直接生成马甲包,所以这样是有泄漏代码和泄漏内部流程风险的。为了预防这一情况发生,所以开发者需要对应用程序包在启动时进行越狱检测。 越狱利弊: 利:通过越狱手机可以直接看到各种系统文件路径,可以修改系统内的设置,也可以免费下载安装苹果内付费下载的应用,安装...

iOS 关于枚举

iOS技术成长之路

typedef NS\_OPTIONS(NSUInteger, SDRectCorner) { SDRectCornerTopLeft = 1 << 0, SDRectCornerTopRight = 1 << 1, SDRectCornerBottomLeft = 1 << 2, SDRectCornerBottomRight = 1 &...

ios 优秀第三方库资源收藏

iOS技术成长之路

Aboutphp A curated list of iOS objective-C ecosystem.css How to Usehtml Simply press command + F + “xxx@” to search for a keyword 前端 Go through our Content Menujava Feedbacknode 期待你们和咱们一块儿共同维...

iOS widget 组件开发

iOS技术成长之路

背景 为了增加客户端的用户体验,在 iOS14 里,苹果更新了扩展组件,引入了新的 UI 组件:WidgetKit 而舍弃了 iOS14 以下版本的 Today Extension 组件 //图片 1 现在很多应用都有小组件功能,可以让用户很快使用 app 的主导功能。 比如今日头条、腾讯视频、优酷视频、抖音等都有这方面的功能。 //图片 2 苹果官方文档这样介绍 widget: T...

ios 面试题

iOS技术成长之路

1:谈谈你对 KVC 的理解 KVC 可以通过 key 直接访问对象的属性,或者给对象的属性赋值,这样可以在运行时动态的访问或修改对象的属性 当调用 setValue:属性值 `forKey:@”name“ 的代码时,,底层的执行机制如下: 1、程序优先调用 set<Key>:属性值方法,代码通过 setter 方法完成设置。注意,这里的<key>是指成员变量名,...

flutter 横向列表

Flutter学习笔记

import 'dart:js_util'; import 'package:flutter/material.dart'; void main() => runApp(myApp()); class myApp extends StatelessWidget { @override Widget build(BuildCo...

flutter 框架结构图

Flutter学习笔记

1.简介 flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 android 上构建高质量的原生用户界面。 一句话总结就是: flutter是一个跨平台、高性能的移动UI框架 2.flutter 框架结构图 简单来讲,flutter 从上到下可以分为三层:框架层、引擎层和嵌入层。

flutter 实现图片文本纵向列表布局

Flutter学习笔记

import 'dart\:js\_util'; import 'package\:flutter/material.dart'; void main() => runApp(myApp()); class myApp extends StatelessWidget { @override Widget build(BuildContext context) { return M...

flutter 实现图片

Flutter学习笔记

import 'dart:js_util'; import 'package:flutter/material.dart'; void main() => runApp(myApp()); class myApp extends StatelessWidget { @override Widget build(BuildContext context) { ret...

flutter AppBar 设置

Flutter学习笔记

1.appBar 官方 api 声明 AppBar({ Key? key, this.leading, this.automaticallyImplyLeading = true, this.title, this.actions, this.flexibleSpace, ...